首页 > 解决方案 > 是否可以将 jpg/png 图像加载到 TbitBtn 或 TSpeedButton 中?

问题描述

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

据我所知TBitBtnTSpeedButton是可以显示图像的按钮,但我对此一无所知,我想知道是否有可能拥有 .JPG 或 .PNG 文件并将该图像加载到按钮中它显示它。

标签: delphivcl

解决方案


TBitBtn并且TSpeedButton只支持 BMP 图片,不支持 JPG/PNG。您必须将 JPG/PNG 图像转换为 BMP(这可以通过首先将图像加载到TJPEGImage/TPNGImage中,然后将Assign()它们加载到按钮的Glyph,即 a来在代码中完成TBitmap)。

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

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


推荐阅读