我目前正在开发一个使用 Firemonkey 框架的项目。在这个项目中,有一个 TImageControl 作为父项,它的子项将是几个 TImage 对象,可能还有一些 TEdit 对象。
我想要做的是,当用户单击按钮时,它会将 TImage 子对象的内容合并到 TImageControl 父对象的内容中,以形成一个场景,然后将其保存到文件中(并且因此,在最终图像中保持 children 的相对位置非常重要)。通过 TEdit 子控件的文本属性,我希望它将每个 TEdit 中的文本写入到最终图像的父级中的相对位置。
我想要实现的一个示例类似于 Adobe 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/