| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 12214 人关注过本帖, 1 人收藏
标题:如何让VB中的PICTURE BOX背景透明
只看楼主 加入收藏
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
结帖率:50%
收藏(1)
 问题点数:0 回复次数:10 
如何让VB中的PICTURE BOX背景透明
如何让VB中的PICTURE BOX背景透明?我做的程序主窗体上本身已加载一张图片做为背景,图片框不是用来放图片的,是用来放别的控件。(放在图片框上是为了方便整体移动)现在要求图片框背景透明(就是能看到图片框后面的窗体背景图片)。而又不影响放在图片框上的各个控件(放在图片框上的控件,也就是些label之类的,本身都可以透明)。整体效果就是:一个加载了背景图片的窗体上,有若干个label放在上面。对用户来说,要让他们不知道有图片框的存在。
搜索更多相关主题的帖子: BOX PICTURE 
2010-05-28 10:46
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
不需要做透明,

把 窗体的背景 按位置复制到 图片框里 就可以了.

放在响应 图片框重绘事件里就可以了.



授人于鱼,不如授人于渔
早已停用QQ了
2010-05-28 15:01
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
收藏
得分:0 
简单的不用API的方法是用ImageList控件,将背景色除去.
用API也能将指定颜色除去.
2010-05-28 23:39
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
以下是引用风吹过b在2010-5-28 15:01:06的发言:

不需要做透明,

把 窗体的背景 按位置复制到 图片框里 就可以了.

放在响应 图片框重绘事件里就可以了.
这个方法,貌似不切实际。因为我窗体上加载的背景图片是每隔一段时间会变的。如果用此方法,可能会造成资源占用过大。

2010-05-29 08:11
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
以下是引用三断笛在2010-5-28 23:39:25的发言:

简单的不用API的方法是用ImageList控件,将背景色除去.
用API也能将指定颜色除去.
请给出两种方法的代码。

2010-05-29 08:13
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
GdiTransparentBlt '透明一种颜色
GdiAlphaBlend '透明正张图片
2010-05-29 08:19
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
以下是引用bczgvip在2010-5-29 08:19:18的发言:

GdiTransparentBlt '透明一种颜色
GdiAlphaBlend '透明正张图片
跪求详细的源码。急用啊。还望版主大人帮帮忙
我的主窗体上加载了一张图片做为背景,并且这张图片是不停变换的。上面有个图片框,图片框里面放有若干标签控件和进度条控件,现在就是想要图片框的背景透明,而放在图片框上的所有控件都能看到,就像是图片框上的这些控件,直接放在窗体上一样。
请版主给个示例的源码。谢谢

2010-05-29 08:28
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
拜托版主,如果看到,请给出代码啊。

2010-06-02 07:56
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
不需要做透明,

把 窗体的背景 按位置复制到 图片框里 就可以了.

放在响应 图片框重绘事件里就可以了.

使用这种的方法
程序代码:
Private Sub Picture1_Paint()
Dim l As Long, t As Long
l = (Picture1.Width - Picture1.ScaleWidth) / 2      '求左右边偏差
t = (Picture1.Height - Picture1.ScaleHeight) / 2    '求上下边偏差
Picture1.PaintPicture Me.Picture, 0, 0, , , Picture1.Left + l, Picture1.Top + t, Picture1.ScaleWidth, Picture1.ScaleHeight    '载入图片,就用这行
'Picture1.PaintPicture Me.Image, 0, 0, , , Picture1.Left + l, Picture1.Top + t, Picture1.ScaleWidth, Picture1.ScaleHeight      '复制的图片,就用这行
End Sub

每次更换背景后,手动调用一下.


[ 本帖最后由 风吹过b 于 2010-6-2 11:29 编辑 ]

授人于鱼,不如授人于渔
早已停用QQ了
2010-06-02 11:27
msxjc
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2005-3-28
收藏
得分:0 
回复 9楼 风吹过b
谢谢老大。透明是透明了。可是还有点小问题。就是,我在设计时,窗体是没有最大化的,然后我在窗体属性中设置窗体以最大化运行以后,图片框的背景是不对的。还停留在没最大化之前的背景上。我已经在form1_Resize事件中调用了你的那段代码。还是这样的。
当我手动调节窗体大小的时候,图片框背景是对了。但是如果让窗体运行以后,直接最大化,图片框背景就不对。

[ 本帖最后由 msxjc 于 2010-6-3 08:13 编辑 ]

2010-06-03 08:09
快速回复:如何让VB中的PICTURE BOX背景透明
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026106 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved