В настоящее время я пытаюсь добавить зеркалирование в нашу программу RotateBitmap (от http://www.efg2.com/Lab/ImageProcessing/RotateScanline.htm). Это в настоящее время выглядит следующим образом (BitMapRotated является TBitmap) в псевдо-коде:Как «слить» изменения в растровое изображение ScanLine
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]
, но не повезло.
Edit: Я нашел реальный вопрос - я перезаписать свои изменения со значениями из исходного растрового изображения. Извините за усилия.
почему не использовать готовый LIBS как Graphics32.org или Vampyre изображения? –
Я бы просто получил растровое изображение. В любом случае, ['this Q & A'] (http://stackoverflow.com/a/10633410/960757) может быть интересным для вашей задачи. – TLama
@ Arioch'The: Мы уже используем эту рутину, и это казалось легкой задачей продлить ее. –