delphi - FMX : Flatten Multiple Images

标签 delphi delphi-xe2 firemonkey

我目前正在开发一个使用 Firemonkey 框架的项目。在这个项目中,有一个 TImageControl 作为父项,它的子项将是几个 TImage 对象,可能还有一些 TEdit 对象。

我想要做的是,当用户单击按钮时,它会将 TImage 子对象的内容合并到 TImageControl 父对象的内容中,以形成一个场景,然后将其保存到文件中(并且因此,在最终图像中保持 children 的相对位置非常重要)。通过 TEdit 子控件的文本属性,我希望它将每个 TEdit 中的文本写入到最终图像的父级中的相对位置。

我想要实现的一个示例类似于 Adob​​e Photoshop 中使用的“拼合图像”功能,它将获取所有图层,并将它们拼合为单个图层。这正是我希望实现的目标。对于文本,它只是将其展平,就好像它是普通图像层一样,并且您失去了编辑文本的能力(因为它现在都是单个图像层)。

到目前为止,我所能找到的只是使用 JPEG 单元的 VCL 示例。现在,虽然肯定可以调整此类代码以与此 Firemonkey 应用程序一起使用(例如“MonkeyMixer”方法),但我很想知道是否有一种更干净的方法来实现这一点,该方法对 Firemonkey 来说更原生。也许类似于children as TImage

如果更适合的话,我愿意将 TImageControl 父级更改为不同的组件类型,但我确实需要能够在最后保存最终图像。

最佳答案

此线程https://forums.embarcadero.com/thread.jspa?threadID=69764&tstart=30建议:

var BMP: TBitmap;
 BMP := FireMonkeyObject.MakeScreenShot;
 BMP.SaveToFile('MyScreenShot.png');
 BMP.Free;

还有其他可能的解决方案。 (我个人没有经验)。

关于delphi - FMX : Flatten Multiple Images,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9947224/

相关文章:

delphi - Mac OS和Windows上的Delphi XE2静态数组分配不同

delphi - 在运行时添加 stringgrid 列

delphi - Firemonkey TControl 子类无法在组件上绘图

delphi - 使用 Brother 打印机将 PDF 打印为垃圾

delphi - 如何确定在Delphi XE3的FireMonkey中GPU是否可用

delphi - VirtualTreeView:编辑下一列

delphi - 如何递归地检测文件的更改?

惠普定制 OEM Windows 上的 Delphi 平台错误

delphi - Firemonkey半透明Image3D有时不透明

delphi - 在 Delphi 的线程中使用串行端口组件 TComPort (v4) 中的事件?