我一直在设计 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 具有 MetroGreenstyle.png 的 SourceLookup 属性值,它是一个 StyleName,与已加载 MetropolisUIGreen.png 图像的 TImage 相关联。
选择 TButtonStyleObject(其 StyleName 为背景)后,我检查 NormalLink 属性,它是 TBitmapLinks 的集合。据我了解,我在 NormalLink 中看到的一个 BitmapLink 包含有关应用于按钮的位图的信息,包括与 MetroGreenstyle.png 文件的矩形区域相对应的坐标 (SourceRect)。
我的假设似乎是错误的,因为当我使用图形程序检查 MetroGreenstyle.png 时,这些坐标没有什么有趣的地方。我检查了许多其他样式的 BitmapLinks,我也发现 SourceRect 坐标似乎并没有真正定义 stylelookup png 文件的有意义的区域。
我显然有这个错误。BitmapLink 的 SourceRect 坐标如何定义 FireMonkey 在呈现控件时应使用的位图。
- 编辑我实际上问了四个问题。我已经更新了这个问题,只包含一个问题。我将在另一篇文章中包含其他问题。--