FMX:展平多个图像

Posted

技术标签:

【中文标题】FMX:展平多个图像【英文标题】:FMX : Flatten Multiple Images 【发布时间】:2012-04-14 09:20:50 【问题描述】:

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

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

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

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

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

【问题讨论】:

JPEG 单元是否真的有其他 VCL 依赖项?如果没有,那么它可以很容易地在 FMX 中使用,甚至不需要任何黑客攻击。如果是这样,也许可以修改单元以删除 VCL 依赖项? 【参考方案1】:

这个帖子https://forums.embarcadero.com/thread.jspa?threadID=69764&tstart=30建议:

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

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

【讨论】:

很抱歉延迟了相当长的响应时间,但这确实如我所料。

以上是关于FMX:展平多个图像的主要内容,如果未能解决你的问题,请参考以下文章

Numpy 展平 RGB 图像数组

sh 展平Docker图像并重新导入为较小的图像

在 Firemonkey 组件中旋转时如何避免重复图像?

如何展平鱼眼图片(使用python)?

如何从 UILabel 创建图像?

如何在 FMX 组件中加载资源