加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 使用图像制作按钮的最简单方法

发布时间:2020-12-15 09:08:25 所属栏目:大数据 来源:网络整理
导读:我正在使用Delphi XE,我想制作一个按钮,只显示提供的PNG图像,透明背景,没有任何额外的边距. 我尝试用TButton做这个,但是我得到了一个带有bsPushButton风格的丑陋灰色背景.如果我使用bsCommandLink样式,则有一个10像素的上边距,尽管我的所有ImageMargins设置
我正在使用Delphi XE,我想制作一个按钮,只显示提供的PNG图像,透明背景,没有任何额外的边距.

我尝试用TButton做这个,但是我得到了一个带有bsPushButton风格的丑陋灰色背景.如果我使用bsCommandLink样式,则有一个10像素的上边距,尽管我的所有ImageMargins设置都设置为0.

实现这一目标的最简单方法是什么?

编辑:它不必看起来像一个按钮.我只需要它看起来与它所分配的图像完全一样.优选地,它应该能够是制表位并具有各种状态(启用,禁用,悬停……),因此我可以为每个状态分配适当的图像.

解决方法

你想要的是一个透明的控件,它继承自 TWinControl,因为你希望它能够检索焦点,这从来都不是一件容易的事.然而,由于Embarcadero最近的版本提供了一个提供此功能的控件. TCustomTransparentControl是一个TWinControl后代,使您的任务更容易.

那么,我要做的是创建一个新组件,并从TCustomTransparentControl继承它,然后我要做的是覆盖Paint方法,如下所示:

procedure TMyTransparentButton.Paint;
var
  rc: TRect;
begin
  if not (csDestroying in ComponentState) then
  begin
    // Specify size and location of the image.
    rc := Rect(0,pngImage.Width,pngImage.Height);

    // Draw the image on the canvas.
    pngImage.Draw(Canvas,rc);
  end;
end;

通过这种方法,您应该能够获得您正在寻找的透明度和半透明度.但是,您仍然需要处理按钮被禁用,按下等的情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读