Delphi 2010的TSpeedButtons似乎并没有真正正确支持PNG透明度,因为Glyph属性内部使用TBitmap,而TBitmap用于位图,并且不能正确支持PNG透明度,那么TSpeedButton.Glyph就无法支持透明度。更新:但实际的问题是我有一些外部东西(Developer Express组件)使delphi的PNG支持不起作用,另一方面,TImage虽然仍然是TPicture,并且可以支持PNG,但也受到了这个Developer的影响表达错误。
已经有人问过一个问题here https://stackoverflow.com/questions/5305519/is-it-possible-to-remove-hideous-outline-around-a-tspeedbutton-glyph,答案展示了如何使用预混合以使透明度不会变成黑色像素。我想知道是否有另一个按钮控件将使用在设计时加载的 alpha 混合 PNG,并且不会将 PNG 资源转换为 BMP 格式,从而丢弃 alpha 通道,并导致此处显示黑色边框。
简而言之,该控件不会使用 TBitmap,也不会使用 TBitmap 所具有的所有颜色键透明度功能。
再说一遍,我不是问如何解决外部黑色问题,同时仍然使用过时的基于 TBitmap/TSpeedButton 的 VCL 功能,因为它缺乏现代 PNG 透明度功能,我问的是如何将其替换为其他“有效”的东西。
第二个缺点是,将小 .png 文件转换为 .DFM 位图资源本质上是浪费空间,并使我的表单 .DFM 内容太大。 .dfm 中的本机 .png 文件格式存储应使生成的表单更小。
Update:PngComponents 看起来应该可以工作,但我得到了一个Invalid Graphic format
当我尝试将 png 加载到 Png 速度按钮时出错。请注意,Png 图像列表组件不存在此类问题。看来 cxLibrary(开发者快递包)正在破坏一些事情。一旦我删除了所有开发者快递的东西,这个问题就消失了。因此,尽管我选择了 Pngcomponents 作为答案,但如果您安装了 devex 的东西,请使用它们的按钮,而不是 pngcomponents。
你可以看看PNG组件 http://cc.embarcadero.com/Item/26127。它有一个 TPngSpeed 按钮和一些其他直接与 Png 图像一起工作的控件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)