gpt4 book ai didi

delphi - 将 TBitmapLinks 与 FireMonkey 样式设计器结合使用

转载 作者:行者123 更新时间:2023-12-03 14:42:13 26 4
gpt4 key购买 nike

我一直在设计 FireMonkey 控件的样式,但有一个问题我一直遇到一些实际问题,那就是如何使用 FireMonkey 样式设计器(特别是不是位图样式设计器)将位图合并到 FireMonkey 样式中。某些样式对象(例如 TButtonStyleObject)具有 BitmapLink 属性,但我看不到它们在为 FireMonkey 控件生成的新自定义样式中如何工作。

让我尽量让问题变得透明。我添加了一个样本并将其资源设置为 Delphi 样式目录中的 MetropolisUIGreen.Style(在 XE7 中,该目录位于 C:\Users\Public\Documents\Embarcadero\Studio\16.0\Styles)。然后,我打开 FireMonkey 样式设计器并找到 ButtonStyle 样式,该样式由 TButtonStyleObject 和 TButtonStyleTextObject 组成,两者都是 TLayout 的父级。 TButtonStyleObject 的 SourceLookup 属性值为 MetroGreenstyle.png,它是与已加载 MetropolisUIGreen.png 图像的 TImage 关联的 StyleName。

选择 TButtonStyleObject(其 StyleName 为背景)后,我检查 NormalLink 属性,它是 TBitmapLink 的集合。据我了解,我在 NormalLink 中看到定义的一个 BitmapLink 包含有关应该用于该按钮的位图的信息,包括与 MetroGreenstyle.png 文件的矩形区域相对应的坐标 (SourceRect)。

我的假设似乎是错误的,因为当我使用图形程序检查 MetroGreenstyle.png 时,这些坐标没有任何有趣的内容。我检查了许多其他样式的 BitmapLinks,我也发现 SourceRect 坐标似乎并没有真正定义 stylelookup png 文件的有意义的区域。

我显然有这个错误。 BitmapLink 的 SourceRect 坐标如何定义 FireMonkey 在渲染控件时应使用的位图。

--编辑我实际上问了四个问题。我已更新此问题以仅包含一个问题。我将在另一篇文章中包含其他问题。 --

最佳答案

我认为 .style 文件中嵌入的位图(作为资源嵌入)和文件中存储的位图(C:\Users\Public\Documents\Embarcadero\Studio\15.0\Styles\MetropolisUIGreen .png,即 519x760)。

嵌入位图的大小似乎与外部文件不同(您可以通过在样式编辑器中查看、选择 Metrogreenstyle.png 节点、打开 MultiResBitmap 的属性编辑器并查看为 Scale 提供的图像大小来检查这一点1.00:750x850。

这解释了为什么坐标看起来都是错误的。不知道是外部文件过时还是相反。

哈!

更新:我设法提取了存储在 .style 文件中的位图,并且我可以确认坐标是相对于该位图的!

更新(2):.Style 文件和 .fmx 文件非常相似,因此您可以执行以下操作:

1)用文本编辑器打开MetropolisUIGreen.Style,找到嵌入的位图(第18行),可以看到:

object TImage
StyleName = 'MetroGreenstyle.png'
MultiResBitmap = <
item
Width = 0
Height = 0
PNG = {...}

2)创建一个新的FMX应用程序,在表单上添加一个TImage并加载一个位图(任何你想要的图片)

3) 将 .Style 文件中的 PNG 值复制到 XFM 文件中。请注意还要修复宽度和高度属性:

MultiResBitmap = <
item
Width = 750
Height = 850
PNG = {...}

4)您应该能够在设计时看到图片;

5) 添加一个按钮 Image1.Bitmap.SaveToFile('C:\temp\new_file.png');运行该程序并将文件保存到您的磁盘上。 :-)

关于delphi - 将 TBitmapLinks 与 FireMonkey 样式设计器结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27111639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com