社区
VCL组件使用和开发
帖子详情
怎样让Panel变透明(显示下面的控件的背景)?
mozart2000
2002-12-17 09:46:37
我的Form的背景是一幅图片,
由于一些原因,我必须用Panel
现在我想让Panel变透明,让下面的Form能构显示出来
请问该怎么办?
...全文
1485
28
打赏
收藏
怎样让Panel变透明(显示下面的控件的背景)?
我的Form的背景是一幅图片, 由于一些原因,我必须用Panel 现在我想让Panel变透明,让下面的Form能构显示出来 请问该怎么办?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
控件
背景
透明
”正是针对这一问题,描述了如何在WinForm应用中实现
Panel
控件
的
背景
透明
效果。 首先,我们要明白.NET Framework的Windows Forms并不直接支持
控件
的
透明
度设置,但我们可以利用一些...
winform自定义
透明
背景
的
panel
控件
在本案例中,我们将探讨如何利用C#编程语言自定义一个
透明
背景
的
Panel
控件
,这将使我们能够在不遮挡底层
控件
的情况下在其上进行绘图或处理点击事件。 首先,我们需要了解Windows Forms中的
透明
度概念。在.NET ...
C#WinForm开发:将
控件
背景
色设置为
透明
同时,我们还需要设置
控件
的`TransparencyKey`属性为其
背景
色,这样所有与`TransparencyKey`颜色相匹配的像素将
变
得
透明
,
显示
其下方的内容。 4. **处理
控件
层次关系**: 要使label
控件
在pictureBox
控件
上方并
显示
...
可以设置
透明
度的
Panel
在Delphi编程环境中,
Panel
组件是一种非常常用的容器
控件
,它可以用来组织和管理其他
控件
。在标题"可以设置
透明
度的
Panel
"中提到的功能,指的是我们可以通过编程方式改
变
Panel
的
透明
度,使得它在界面上呈现出不同...
BCB T
Panel
控件
透明
源代码
在默认情况下,T
Panel
控件
是不
透明
的,但有时开发者可能需要实现
透明
效果,以便在其上
显示
其他
控件
或
背景
图像。本主题将详细探讨如何通过源代码实现BCB T
Panel
控件
的
透明
功能。 首先,我们要了解BCB(Borland C++ ...
VCL组件使用和开发
604
社区成员
13,456
社区内容
发帖
与我相关
我的任务
VCL组件使用和开发
C++ Builder VCL组件使用和开发
复制链接
扫一扫
分享
社区描述
C++ Builder VCL组件使用和开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章