我一直在为FireMonkey控件设置样式,但是有一个问题我一直遇到了实质性的困难,那就是如何使用FireMonkey Style Designer(而不是Bitmap Style Designer)将位图合并到FireMonkey样式中。某些已经设置好的对象(例如TButtonStyleObject)具有BitmapLink属性,但是我无法看出它们如何在为FireMonkey控件生成新的自定义样式时工作。
让我尽可能地阐明这个问题。我添加了一个StyleBook并将其资源设置为Delphi样式目录中的MetroplisUIGreen.Style(在XE7中,此目录位于C:\Users\Public\Documents\Embarcadero\Studio\16.0\Styles)。然后我打开了FireMonkey Style Designer并找到buttonstyle样式,该样式由TButtonStyleObject和TButtonStyleTextObject组成,两者都附加在TLayout上。 TButtonStyleObject具有MetroGreenstyle.png的SourceLookup属性值,这是与MetropolisUIGreen.png图像一起加载的TImage相关的StyleName。
选择TButtonStyleObject(其StyleName为background)后,我检查NormalLink属性,它是TBitmapLinks的集合。我的理解是,我在NormalLink中看到的一个BitmapLink包含有关应用于按钮的位图的信息,包括与MetroGreenstyle.png文件中矩形区域相对应的坐标(SourceRect)。
我的假设似乎是错误的,因为当我使用图形程序检查MetroGreenstyle.png时,这些坐标没有任何有趣的内容。我检查了许多其他样式的BitmapLinks,也发现其中SourceRect坐标似乎并不真正定义样式查找png文件的有意义的区域。
我的理解可能是错误的。当渲染控件时,BitmapLink的SourceRect坐标如何确定FireMonkey应使用哪个位图。
让我尽可能地阐明这个问题。我添加了一个StyleBook并将其资源设置为Delphi样式目录中的MetroplisUIGreen.Style(在XE7中,此目录位于C:\Users\Public\Documents\Embarcadero\Studio\16.0\Styles)。然后我打开了FireMonkey Style Designer并找到buttonstyle样式,该样式由TButtonStyleObject和TButtonStyleTextObject组成,两者都附加在TLayout上。 TButtonStyleObject具有MetroGreenstyle.png的SourceLookup属性值,这是与MetropolisUIGreen.png图像一起加载的TImage相关的StyleName。
选择TButtonStyleObject(其StyleName为background)后,我检查NormalLink属性,它是TBitmapLinks的集合。我的理解是,我在NormalLink中看到的一个BitmapLink包含有关应用于按钮的位图的信息,包括与MetroGreenstyle.png文件中矩形区域相对应的坐标(SourceRect)。
我的假设似乎是错误的,因为当我使用图形程序检查MetroGreenstyle.png时,这些坐标没有任何有趣的内容。我检查了许多其他样式的BitmapLinks,也发现其中SourceRect坐标似乎并不真正定义样式查找png文件的有意义的区域。
我的理解可能是错误的。当渲染控件时,BitmapLink的SourceRect坐标如何确定FireMonkey应使用哪个位图。