Почему при вырезании части изображения выходное изображение получается искаженным?
Программа под смартфон. На форме лежит Layout, на нем Image На картинке, посредине лежит Rectangle. Когда я пытаюсь вырезать из картинки участок ограниченный Rectangle, выходное изображение не соответствует границам и имеет искаженный масштаб. Ка можно привести это в норму?
var
bmpS, bmpD: TBitMap;
iRectS: Trectf;
HD, wD: integer;
iRectD: Trectf;
Scalex, scaley: real;
begin
Scalex := 1;
scaley := 1;
bmpS := imgCameraView.Bitmap;
iRectS := Trectf.Create(TPointF.Create(Ramka.Position.X * Scalex,
Ramka.Position.Y * scaley), TPointF.Create((Ramka.Position.X + Ramka.Width)
* Scalex, (Ramka.Position.Y + Ramka.Height) * scaley));
wD := Max(0, Round(Ramka.Width));
HD := Max(0, Round(Ramka.Height));
bmpD := TBitMap.Create(wD, HD);
iRectD := Trectf.Create(0, 0, Ramka.Width, Ramka.Height);
Code.Visible := True;
if bmpD.Canvas.BeginScene then
try
bmpD.Canvas.DrawBitmap(bmpS, iRectS, iRectD, 1);
bmpD.Canvas.EndScene;
Code.Bitmap.assign(bmpD);
finally
bmpD.Free;
end;
Источник: Stack Overflow на русском