VB.net制作背景透明的PictureBox控件

r040bk20032030 2009-06-11 11:31:12
VB.net中,如何实现PictureBox控件的背景透明?即,如果两个PictureBox控件重叠,通过PictureBox1中图像透明的部分,可以看到下面PictureBox2控件中的图像。
是不是必须自定义一个控件啊?
如果要自定义的话,应该如何做?

我在网上搜到一些资料,如MSDN中的。如下:
默认情况下,控件不支持透明背景色。但是,通过使用构造函数中的 Control.SetStyle 方法,可以让控件拥有不透明、透明或半透明的背景色。SetStyle 方法是 Control 类的用于为控件设置特定的样式首选项的方法,并可用来启用或禁用对透明背景色的支持。
使控件拥有透明背景色 ,在控件的代码编辑器中找到构造函数。 在构造函数中调用窗体的 SetStyle。
SetStyle(ControlStyles.SupportsTransparentBackColor, True)
这将使控件能够支持透明背景色。
在步骤 1 中添加的代码行下再添加下面的代码行。这将把控件的 BackColor 设置为 Transparent。
Me.BackColor = Color.Transparent

我看不上太懂。所谓的“在控件的代码编辑器中找到构造函数”是不是指Form1中的InitializeComponent()啊?
我按照上面说的,在 Private Sub InitializeComponent()中的'PictureBox部分添加代码:
SetStyle(ControlStyles.SupportsTransparentBackColor, True)
Me.BackColor = Color.Transparent
结果每次都报错。错误信息->“找不到方法Form.Windows.Forms.Form.SetStyle()”
这究竟是怎么回事啊?到底该如何解决?
...全文
1518 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
COLA168 2011-10-14
  • 打赏
  • 举报
回复

我也来看看
wwy2932767 2009-11-16
  • 打赏
  • 举报
回复
我也来看看
rzbai 2009-09-29
  • 打赏
  • 举报
回复
正在学习这方法
古今多少事 2009-06-15
  • 打赏
  • 举报
回复
Tag!
r040bk20032030 2009-06-13
  • 打赏
  • 举报
回复
5楼,太谢谢你了。
我找了好几天了,终于解决了这个难题。
a854468521 2009-06-12
  • 打赏
  • 举报
回复
顶,控件透明我也需要。
宝_爸 2009-06-11
  • 打赏
  • 举报
回复
msdn中SetStyle的sample code:

Public Sub EnableDoubleBuffering()
' Set the value of the double-buffering style bits to true.
Me.SetStyle(ControlStyles.DoubleBuffer _
Or ControlStyles.UserPaint _
Or ControlStyles.AllPaintingInWmPaint, _
True)
Me.UpdateStyles()
End Sub

VB中的构造函数应该是:
Public Sub New()

' This call is required by the Windows Form Designer.
InitializeComponent()

' Add any initialization after the InitializeComponent() call.

End Sub
r040bk20032030 2009-06-11
  • 打赏
  • 举报
回复
补充一下,我知道,改变控件的Parent,可以实现透明。可是这种方法对于我现在的要求,似乎不太适用。如:
如果将Picture1.Parent=picture2的话,虽然可以实现透明,可是却会强制改变Picture1的位置和显示区域(只有在Picture2内部的,才能显示。)而且当图层很多时,处理会很麻烦。
r040bk20032030 2009-06-11
  • 打赏
  • 举报
回复
SetStyle 方法我已经会用了。即使是这样,也达不到我期待的结果。
这种办法得出来的,只是让Picture1的透明部分颜色变为窗体颜色而已。依然会遮盖其下面的Picture2的图像。没能达到我预期的透明效果。
我想问一下,有没有其他的方法可以实现我想要的效果。

wuyq11 2009-06-11
  • 打赏
  • 举报
回复

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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