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

标签 delphi firemonkey delphi-10.2-tokyo

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

enter image description here

最佳答案

这是一个适合我的示例:

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;

我在这里假设 Rectangle1Image1 作为其 Parent:

enter image description here

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

这是程序运行的结果: enter image description here

关于delphi - 如何使用firemonkey在选定区域裁剪位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880322/

相关文章:

delphi - 如何将电影切成四分之一并在 4 台显示器上显示?

string - 如何将字符串中的服务器名称与端口号分开?

delphi - UDP 数据包未被 Wireshark 捕获,但被 UDP 应用程序捕获

delphi - 在XE7中,TEdit.OnApplyStyleLookup不起作用

delphi - DynArraySize() 仅能正确运行最多 649 个整数元素的数组

delphi - 如何从Delphi组件面板中删除框架?

delphi - 将自动完成字符串分配给的访问冲突

仅当应用程序处于事件状态时 Delphi FMX FormStyle StayOnTop

android - 确定定位服务是否开启

delphi - 如何在 Firemonkey 中使用动画 gif?