我在Visual Basic Express 2010上有一些图片框,这些图片上有alpha通道,但当将背景色设置为透明时,它并不变成透明的,而是成为表单的颜色。我仍然不能通过alpha图像看到其他任何东西。问题是什么? 我不仅想看到图片框后面的父对象,还想看到它下面的所有其他对象。
我在Visual Basic Express 2010上有一些图片框,这些图片上有alpha通道,但当将背景色设置为透明时,它并不变成透明的,而是成为表单的颜色。我仍然不能通过alpha图像看到其他任何东西。问题是什么? 我不仅想看到图片框后面的父对象,还想看到它下面的所有其他对象。
TransparentPictureBox
)Public Class TransparentPictureBox
Inherits PictureBox
End Class
4) 将此代码粘贴到类中:
Protected Overrides Sub OnPaintBackground(e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaintBackground(e)
If Parent IsNot Nothing Then
Dim index As Integer = Parent.Controls.GetChildIndex(Me)
For i As Integer = Parent.Controls.Count - 1 To index + 1 Step -1
Dim c As Control = Parent.Controls(i)
If c.Bounds.IntersectsWith(Bounds) AndAlso c.Visible = True Then
Dim bmp As New Bitmap(c.Width, c.Height, e.Graphics)
c.DrawToBitmap(bmp, c.ClientRectangle)
e.Graphics.TranslateTransform(c.Left - Left, c.Top - Top)
e.Graphics.DrawImageUnscaled(bmp, Point.Empty)
e.Graphics.TranslateTransform(Left - c.Left, Top - c.Top)
bmp.Dispose()
End If
Next
End If
End Sub
这段代码将覆盖 PictureBox 的 OnPaintBackground
事件,从而绘制自己的透明背景。
5) 构建项目。
6) 从工具箱中选择你的组件并添加到你的窗体上。
希望这可以帮到你!
结果:
除了您的评论之外,首先通过 Build
> Build <your project name>
菜单构建您的项目。
然后你可以在工具箱的顶部找到您的自定义控件,它位于<your project name> Components
类别下方。