怎样实现只有某个控件半透明(不是整个窗体半透明)??? ( 积分: 100 )

  • 主题发起人 主题发起人 dysysu
  • 开始时间 开始时间
D

dysysu

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样实现只有某个控件半透明(不是整个窗体半透明)??
 

需要透明什么控件啊?
 
比如label
 
用ALPHABLEND原理自已BLEND
 
估计也只有自己设计一个控件了。
 
给个参考:

透明的控件. 一般继承自TGraphicControl的

(就是那些没有handle属性, 不能有focus的控件, 如image)

都有Transparent属性. 对TWinControl类的控件, 要实现透明只要完成以下

三步基本上就成了.

1. override 它的CreateParams方法, exstyle 里加上WS_EX_TRANSPARENT.

2. 修改它的parent的window style, 去掉WS_CLIPCHILDREN.

3. 截获WM_ERASEBKGND, 什么都不做直接返回1.

一般有上面3步能成. 有些控件比如TPanel, 在它的paint中用了fillrect, 所以要实现透明的话还要override 它的paint方法, 自己画.

按钮透明需要进一步处理.

createparams里加上style := style or BS_OWNERDRAW;

然后在WM_DRAWITEM中自己画吧
 
后退
顶部