说明
我正在使用PNG加载的图像列表,以允许我的菜单和速度按钮透明。 还使用运行时主题来允许用户定义GUI体验。
如果没有选择样式,a.k.a。“Windows”样式,我的工具栏会生成漂亮的蒙版,一切都按预期工作。但是,当我激活一个样式(无论哪一个)时,会执行一个非常奇怪的蒙版渲染,其中某些按钮在禁用时看起来是空的(第一个和前一个按钮),而一些(发布和取消按钮)实际上显示原始图像的最小掩模。
研究: 我已经创建了一个VCL样式测试应用程序,并且正在窥探VCL以确切了解绘图过程的进展情况。 我对SO的研究来自more or less related topic,但id dint确实有助于解决我的问题。
与此同时,我可以想象其他人已经陷入困境,可以指引我朝着这个方向前进。
问题:
我正在寻找一种方法来正确显示这些蒙版,或者自动生成(如此链接),这样即使使用VCL样式也可以按预期工作。这可以通过在我的图像列表中自动创建蒙版,或者最好通过更改为样式自定义绘图生成蒙版的行为。
顺便说一下:“不要使用风格”不是我要找的答案。答案 0 :(得分:1)
事实证明,有一个未记录的属性Vcl.Controls.TImageList.GrayscaleFactor
如果有0以外的任何东西,那么当使用样式时,图像会以灰色方式正确呈现。
灰度系数本身似乎对黑暗"黑暗"生成的禁用按钮。默认值为0,这将产生上述问题中的行为。如果没有运行时主题处于活动状态,则灰度因子似乎无效。
就个人而言,如果GrayscaleFactor也会影响透明度,我会更喜欢它,所以按钮看起来会更多" ghosted"而不是"变灰"。灰色可能不适用于所有主题......想象一下"灰色"主题:))
下面是TImageList.Grayscalefactor对windows 10蓝色主题的影响。