是否可以将jpg / png图像加载到TbitBtn或TSpeedButton中?

时间:2019-06-28 14:37:13

标签: delphi vcl

我需要在按钮中显示图像,以便用户在视觉上更容易知道按钮的用途,而不是阅读其文本。

据我所知TBitBtnTSpeedButton是可以显示图像的按钮,但是我对此一无所知,我想知道是否可以使用。 JPG或.PNG文件,然后将该图像加载到按钮中,以便显示出来。

3 个答案:

答案 0 :(得分:4)

TBitBtnTSpeedButton仅支持BMP图像,不支持JPG / PNG。您将必须将JPG / PNG图像转换为BMP(可以通过代码完成,方法是先将图像加载到TJPEGImage / TPNGImage中,然后再将Assign()加载到按钮的{{ 1}},即TBitmap)。

在现代Delphi版本中,TButton具有Images属性,您可以将其分配给任何TCustomImageList,并且可以将PNG图像添加到标准TImageList或使用第三方PNG ImageList。

否则,您可以创建自己的所有者绘制的按钮来直接绘制JPG / PNG图像。从Glyph派生并覆盖其CreateParams()方法以启用BS_OWNERDRAW样式,然后处理WM_DRAWITEM消息以根据需要绘制按钮(这就是{{1 }})。

答案 1 :(得分:2)

否,您不能为其中任何一个分配文件。如果您不知道控件,请查阅该手册:http://docwiki.embarcadero.com/Libraries/Tokyo/en/Vcl.Buttons.TBitBtnhttp://docwiki.embarcadero.com/Libraries/Tokyo/en/Vcl.Buttons.TSpeedButton

您必须间接进行:将文件加载到TBitmap中,然后将其分配给按钮的Glyph属性-手册通过http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/TBitBtnLayout_(Delphi)

给出了一个示例

答案 2 :(得分:0)

是的,有可能。 在某些情况下, TBitBtn 类型按钮的背景颜色默认为透明。创建具有透明背景的PNG图像。在窗体上放置一个TImage组件。将PNG图像加载到 TImage 组件的Image属性中。将 TImage 组件和选定的图像放置在 TBitBtn 按钮将在窗体上的位置。在图像上放置一个 TBitBtn 按钮。那将是个不错的按钮。

  • 已在Linux的Lazarus IDE中进行了测试。如果按钮和图像放置在组件 TGroupBox 上,则效果很好。如果将它们放置在其他分组组件上,则不会显示 TBitBtn 的透明背景。