現在、RotateBitmap ルーチンにミラーリングを追加しようとしています ( http://www.efg2.com/Lab/ImageProcessing/RotateScanline.htmから)。これは現在、疑似コードで次のようになっています (BitMapRotated は TBitmap です)。
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;
これは、回転または反射する必要がある場合に機能します。両方を行うと、呼び出しSetSize
により、ScanLine を介した以前の変更が無効になるようです。変更を「フラッシュ」または保存するにはどうすればよいですか? を呼び出して設定しようとしましたがBitmapRotated.Handle
、うまくいきませんでした。BitmapRotated.Dormant
BitmapRotated.Canvas.Pixels[0, 0]
編集:本当の問題を見つけました- 元のビットマップの値で変更を上書きしています。申し訳ありません。