社区
VCL组件使用和开发
帖子详情
怎样让Panel变透明(显示下面的控件的背景)?
mozart2000
2002-12-17 09:46:37
我的Form的背景是一幅图片,
由于一些原因,我必须用Panel
现在我想让Panel变透明,让下面的Form能构显示出来
请问该怎么办?
...全文
1424
28
打赏
收藏
怎样让Panel变透明(显示下面的控件的背景)?
我的Form的背景是一幅图片, 由于一些原因,我必须用Panel 现在我想让Panel变透明,让下面的Form能构显示出来 请问该怎么办?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
28 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jishiping
2003-01-03
打赏
举报
回复
在Win2000下我试了,没有问题啊。
SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,
GWL_EXSTYLE)|WS_EX_LAYERED);
if (!SetLayeredWindowAttributes(Handle,0,50,LWA_ALPHA))
ShowMessage(SysErrorMessage(GetLastError())); //显示错误信息
frankxht
2003-01-03
打赏
举报
回复
jishiping(JSP 季世平) 的代码我运行时正确,可是用SetWindowLong和SetLayeredWindowAttributes 时就像 fractalcloud(当饮三万六千杯) 说的第二个函数返回值为0,我是2000操作系统。
痞子酷
2003-01-03
打赏
举报
回复
又学啦一招
:)
penu
2003-01-03
打赏
举报
回复
但MSDN中没有说这个函数只对父窗口为NULL有效啊!
penu
2003-01-03
打赏
举报
回复
咦?真是这样。但我印象中好象有这样做并成功过……难道我记错了……
fractalcloud
2003-01-03
打赏
举报
回复
终于弄清楚了:每次实验大侠们的代码时,我的Panel1上没放任何其他控件,于是Panel1控件没有将其下的背景透出来。当我在Panel1上放上控件后,透明效果终于出来了……估计实际用Panel的时候,没人会不在上面放任何东西吧?
jishiping
2003-01-03
打赏
举报
回复
之前试的是Form,刚才用Panel试了一下,果然不行。我估计只有父窗口为NULL的窗口才可以使用SetLayeredWindowAttributes。我没有最新的MSDN,这个函数在BCB的帮助以及老的MSDN里都查不到。还是使用我说的方法吧,对所有的Windows都有效。
penu
2003-01-03
打赏
举报
回复
to:JSP
你用的是设置panel的可视区域吧?
penu
2003-01-03
打赏
举报
回复
用这些方法没有问题的,你把源码贴出来看看。
jishiping
2003-01-02
打赏
举报
回复
SetLayeredWindowAttributes 只对Win 2000/XP有效,下面给你一个在任何
Windows下都有效的方法:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
HRGN hRgn = NULL;
for(int n=0; n<Panel1->ControlCount; n++) {
TControl* Control = Panel1->Controls[n];
TRect Rect = Control->BoundsRect;
HRGN hRgn1 = CreateRectRgnIndirect(
&Rect);
if (hRgn == NULL)
hRgn = hRgn1;
else {
CombineRgn(hRgn, hRgn, hRgn1,
RGN_OR);
DeleteObject(hRgn1);
}
}
SetWindowRgn(Panel1->Handle, hRgn, TRUE);
DeleteObject(hRgn);
}
penu
2003-01-02
打赏
举报
回复
先要用SetWindowLong这个函数。
fractalcloud
2002-12-30
打赏
举报
回复
按照小民大虾的代码,在win2000下我试验了一下:分别放置于Form1的OnCreate或OnClick,Panel1没变化。
再加上懒猫大虾的SetLayeredWindowAttributes(Panel1->Handle,0,10,LWA_ALPHA),这个函数没有成功,即返回值为0。
Why??
penu
2002-12-28
打赏
举报
回复
取得panel的句柄(Handle),有个API函数可以设置指定窗口的透明度:
SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE)|WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle,0,alpha,LWA_ALPHA);
alpha为透明度,取值范围:0-255;0:完全透明、255:完全不透明。BYTE类型。
shally5
2002-12-27
打赏
举报
回复
学习!
bbonline
2002-12-27
打赏
举报
回复
用FlatStyle2K控件可以实现
hlmsoft
2002-12-22
打赏
举报
回复
嘿,我是在win2000下用的,不过在
win98下应该可以,明天我试试
shudingbo
2002-12-22
打赏
举报
回复
>> hlmsoft(小民)
好象只有2000下才行,
hlmsoft
2002-12-20
打赏
举报
回复
//取得Panel1的原有类型数据
LONG ExStyle = ::GetWindowLong(Panel1->Handle, GWL_EXSTYLE);
//将Panel1设为透明状态
::SetWindowLong(Panel1->Handle, GWL_EXSTYLE,
ExStyle | WS_EX_TRANSPARENT);
在窗口扩展样式中有很多好东西
tsk
2002-12-20
打赏
举报
回复
我帮你看看!
devie
2002-12-20
打赏
举报
回复
SemiPercent属性设置透明度,
加载更多回复(8)
winform
panel
控件
背景
透明
winform
panel
控件
背景
透明
在网页中通过div+css实现半
透明
效果不难,今天我们看看一种在winfrom中实现的方法
winform自定义
透明
背景
的
panel
控件
winform自定义的
透明
背景
的
panel
,可以覆盖在其他
控件
上,然后在该
透明
panel
上做绘图、点击获取坐标等操作。
可以设置
透明
度的
Panel
可以设置
透明
度的
Panel
,还可以设置颜色等,非常好用~~!
C#WinForm开发:将
控件
背景
色设置为
透明
以pictureBox
控件
上label
控件
为例,设置label
控件
的
背景
色
透明
,可以看到pictureBox
控件
的
背景
色。
BCB T
Panel
控件
透明
源代码
C++ Builder T
Panel
控件
透明
源代码,根据http://blog.csdn.net/cczlp/article/details/2542886整理。
VCL组件使用和开发
604
社区成员
13,457
社区内容
发帖
与我相关
我的任务
VCL组件使用和开发
C++ Builder VCL组件使用和开发
复制链接
扫一扫
分享
社区描述
C++ Builder VCL组件使用和开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章