J'essaie actuellement d'ajouter une mise en miroir à notre routine RotateBitmap (à partir de http://www.efg2.com/Lab/ImageProcessing/RotateScanline.htm). Cela ressemble actuellement à ceci (BitMapRotated est un TBitmap) en pseudo-code:Comment "vider" les modifications apportées à un ScanLine d'un bitmap
var
RowRotatedQ: pRGBquadArray; //4 bytes
if must reflect then
begin
for each j do
begin
RowRotatedQ := BitmapRotated.Scanline[j];
manipulate RowRotatedQ
end;
end;
if must rotate then
begin
BitmapRotated.SetSize(NewWidth, NewHeight); //resize it for rotation
...
end;
Cela fonctionne si je soit doit tourner ou réfléchir. Si je fais les deux alors apparemment l'appel à SetSize
invalide mes changements précédents via ScanLine. Comment puis-je "vider" ou enregistrer mes modifications? J'ai essayé d'appeler BitmapRotated.Handle
, BitmapRotated.Dormant
et le réglage BitmapRotated.Canvas.Pixels[0, 0]
mais sans chance.
Edit: J'ai trouvé le réel question - je suis mes changements avec l'écrasement des valeurs de l'image d'origine. Désolé pour l'effort.
pourquoi ne pas utiliser libs comme ready-made Graphics32.org ou Vampyre Imaging? –
Je voudrais simplement avoir un bitmap en sortie. Quoi qu'il en soit, ["ce Q & A"] (http://stackoverflow.com/a/10633410/960757) pourrait être intéressant pour votre tâche. – TLama
@ Arioch'The: Nous utilisons déjà cette routine et il nous a semblé facile de l'étendre. –