如何使用firemonkey在选定区域中裁剪位图?

时间:2017-10-22 23:59:09

标签: delphi firemonkey delphi-10.2-tokyo

我需要为我的应用创建裁剪效果。我在TImage上有一个TRectangle,当用户按下保存按钮时,我需要复制TRectangle使用的区域。有一些方法可以从Image1.Bitmap中剪切一个特定的区域?我打印了一张图片,以便更好地说明我的需求:

enter image description here

1 个答案:

答案 0 :(得分:3)

这是一个适合我的示例:

procedure TForm1.Button1Click(Sender: TObject);
var
  Bmp: TBitmap;
  xScale, yScale: extended;
  iRect: TRect;
begin

  Bmp := TBitmap.Create;
  xScale := Image1.Bitmap.Width / Image1.Width;
  yScale := Image1.Bitmap.Height / Image1.Height;
  try
    Bmp.Width := round(Rectangle1.Width * xScale);
    Bmp.Height := round(Rectangle1.Height * yScale);
    iRect.Left := round(Rectangle1.Position.X * xScale);
    iRect.Top := round(Rectangle1.Position.Y * yScale);
    iRect.Width := round(Rectangle1.Width * xScale);
    iRect.Height := round(Rectangle1.Height * yScale);
    Bmp.CopyFromBitmap(Image1.Bitmap, iRect, 0, 0);
    Image2.Bitmap := Bmp
  finally
    Bmp.Free;
  end;
end;

我在此假设Rectangle1 Image1Parent

enter image description here

否则,您需要考虑Position.XPosition.Y属性的偏移量。

以下是程序功能的结果: enter image description here