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

紫色狂澜 2002-05-23 11:22:23
我只想要某一个控件半透明或者窗体的某一块半透明,请问怎样才能实现呢?
先谢了!!
...全文
239 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jinglihui 2002-06-02
  • 打赏
  • 举报
回复
Windows2000/XP里的user32.dll里提供了一个方法:SetLayeredWindowAttributes
你可以用LoadLibrary来加载user32.dll
typedef BOOL (WINAPI *TRANSPARENTFORM)(HWND,COLORREF,BYTE,DWORD);
TRANSPARENTFORM TransparentForm=NULL;

SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE)^0x80000);
HINSTANCE hInst=LoadLibrary("User32.dll");
if(hInst)
(TRANSPARENTFORM)GetProcAddress(hInst,"SetLayeredWindowAttributes");
TransparentForm(Handle,0,alpha,2);

这里的Handle是一个句柄,我只试过把它窗口的句柄传给它,改变alpha的值(0——255)可以实现从完全透明到不透明的窗口,你可以把你想要透明的控件的句柄传给它,效果一试就知道了!
再加上重载CreateParams函数,可以轻松实现类似FlashGet的那个小窗口!
Jinglihui 2002-06-02
  • 打赏
  • 举报
回复
Windows2000/XP里的user32.dll里提供了一个方法:SetLayeredWindowAttributes
你可以用LoadLibrary来加载user32.dll
typedef BOOL (WINAPI *TRANSPARENTFORM)(HWND,COLORREF,BYTE,DWORD);
TRANSPARENTFORM TransparentForm=NULL;

SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE)^0x80000);
HINSTANCE hInst=LoadLibrary("User32.dll");
if(hInst)
(TRANSPARENTFORM)GetProcAddress(hInst,"SetLayeredWindowAttributes");
TransparentForm(Handle,0,alpha,2);

这里的Handle是一个句柄,我只试过把它窗口的句柄传给它,改变alpha的值(0——255)可以实现从完全透明到不透明的窗口,你可以把你想要透明的控件的句柄传给它,效果一试就知道了!
再加上重载CreateParams函数,可以轻松实现类似FlashGet的那个小窗口!
tiger_qi 2002-06-02
  • 打赏
  • 举报
回复
晚上给你回答把,现在球赛开始了:)

这个问题挺麻烦的:)
dealxl 2002-05-28
  • 打赏
  • 举报
回复
觉得好象也应该是“Alpha”类似的属性。因为以前玩着做Flash、PhotoShop时就常用这个属性 :)
magicsnake 2002-05-27
  • 打赏
  • 举报
回复
来取经:)
mygodness 2002-05-24
  • 打赏
  • 举报
回复
某一控件可以用transparent设为true
yufei_yf 2002-05-24
  • 打赏
  • 举报
回复
控件其实也是一个窗体,通过控件的句柄就可以了。
windindance 2002-05-24
  • 打赏
  • 举报
回复
you can use TShape
Shape->Pen->Mode = pmMask;
Shape->Brush->Color = clRed;
Shape->Brush->Style = clSolid;
紫色狂澜 2002-05-24
  • 打赏
  • 举报
回复
我只知道在Win2000/XP定义窗口的Alpha值是让整个窗体透明,难道可以实现某个区域半透明吗?

还有就是很多控件根本就没有transparent这个属性,就算有也是全透明的,要怎样才能让它半透明呢?
fsheron 2002-05-23
  • 打赏
  • 举报
回复
如果你使用Win2000/XP可以定义窗口的Alpha值,如果是Win95/98就要自己画窗口内容。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧