【问题标题】:TButton with transparent PNG image and glowing hover effect具有透明 PNG 图像和发光悬停效果的 TButton
【发布时间】:2011-01-26 12:53:24
【问题描述】:

我正在使用 Delphi XE 并尝试更新旧的 Delphi 代码库。该软件最初是使用 Delphi 7 开发的,并使用了 Jonathan Hosking 在 2001 年编写的 TPNGButton 的破解版本。TPNGButton 支持透明度和发光的悬停效果。不幸的是,当项目移植到 Delphi XE 上时,所有图像都被拉伸以填充整个按钮的区域。

我正在尝试使用 TButton 创建类似的按钮,但我碰壁了。我创建了一个新的测试项目并添加了一个 TButton 和一个带有 PNG 图像的 TImageList。我将此图像列表添加到按钮的 Image 属性中,并选择了正确的 ImageIndex。这导致按钮具有正确的图像,但图像太小(16x16 像素)。

我尝试通过更改 TImageList 的大小来解决大小问题,但在此之后,即使我输入以前的值,我也根本看不到图像。当然,即使是最新版本的 Delphi GUI 设计器也不支持撤消,所以我必须删除图像列表并添加新的图像列表才能将图像恢复到按钮。

有没有更好的方法来获得我想要的那种按钮,还是我必须自己编写代码或尝试修复被黑的 TPNGButton 实现?这肯定不是 2011 年使用 Delphi 进行 GUI 开发的最佳方式吗?

【问题讨论】:

  • 必须有第三方组件支持这种按钮。我不知道它们是什么,但网络搜索应该会产生一些东西。
  • 我不敢相信我需要一个 3rd 方组件才能获得大于 16x16 的图像。尽管考虑到我最近使用 Delphi 的经验,但如果事实证明这是真的,我也不会感到惊讶。

标签: delphi user-interface


【解决方案1】:

TAdvGlowButton 不是免费的,但正是这种按钮。

TMS Component pack 值得支付,如果您想要一条工作功能区。

另请参阅rkGlassButton,它是免费的。

【讨论】:

  • 我想我会选择 TAdvGlowButton。那个是由一家公司支持的,所以如果有人在 5 年后必须升级这个软件,她就不必提出一些关于升级的问题。 :)
【解决方案2】:

Delphi XE 在绘制到画布时会拉伸图像。始终使用正确的 x 位置绘制完整尺寸的图像可以避免拉伸。然后画布外的所有像素都会被自动裁剪,并出现正确的字形。将TPngButton的Paint方法中的case语句修改如下:

     Case EtatBtn of
       0: FPngImg.Draw(Canvas,Rect(0,0,4 * width, Height)); // Normal
       1: FPngImg.Draw(Canvas,Rect(-Width,0,3 * width, Height)); // Mouse Entered
       2: FPngImg.Draw(Canvas,Rect(-(Width * 2),0,2*width,Height)); // Pressed
       3: FPngImg.Draw(Canvas,Rect(-(Width * 3),0,width,Height)); // Disabled
     end; //case

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2012-02-26
    • 2014-03-31
    • 2020-07-25
    • 2013-01-25
    相关资源
    最近更新 更多