Когда я вызываю canvas.stretchdraw с растровым изображением, растровое изображение будет зеркально отражено / перевернуто, когда влево> вправо. Это не происходит для PNG. Это ошибка? Что я могу сделать, чтобы это исправить?
Чтобы повторить, попробуйте этот код:
procedure TForm1.TestStretchdraw;
var
vBMP: TBitmap;
vPNG: TPNGImage;
X0,Y0,X1,Y1 : integer;
R : TRect;
procedure FlipRect;
var
T : integer;
begin
T := R.Left;
R.Left := R.Right;
R.Right := T;
end;
begin
vBMP := TBitmap.Create;
vPNG := TPNGImage.Create;
try
vBMP.LoadFromFile('c:\temp\pic\pic.bmp');
vPNG.LoadFromFile('c:\temp\pic\pic.png');
X0 := 0;
Y0 := 0;
X1 := X0 + vBMP.Width;
Y1 := Y0 + vBMP.Height;
R := Rect(X0,Y0,X1,Y1);
FlipRect;
Canvas.StretchDraw(R,vBMP); //This image will be drawn mirrored
X0 := vBMP.Width+10;
Y0 := 0;
X1 := X0 + vPNG.Width;
Y1 := Y0 + vPNG.Height;
R := Rect(X0,Y0,X1,Y1);
FlipRect;
Canvas.StretchDraw(R,vPNG); //This will not
finally
vPNG.Free;
vBMP.Free;
end;
end;
(но замените мои показания некоторыми своими)