不可能干净的 PictureBox
Impossible clean PictureBox
我想清理 PictureBox 图像,所以我编写了以下代码:TransparentPictureBox.Image = Nothing
,图像不会消失,并且我获得了与之前图像重叠的所有新图像。我该如何解决这个问题?
我一直在使用自定义控件,这是 class:
Public Class TransparentPictureBox
Inherits PictureBox
Public Sub New()
Me.SetStyle(ControlStyles.Opaque, True)
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False)
End Sub
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H20 ' Turn on WS_EX_TRANSPARENT
Return cp
End Get
End Property
End Class
写这个虽然不是最佳解决方案,但它会起作用
picturebox1.imagelocation = ""
控件完全按照您设计的方式工作。
将 ControlStyles.Opaque 选项设置为 True
,它不绘制背景:
If true, the control is drawn opaque and the background is not painted.
当您将 Image
属性 设置为 Nothing
时,您希望它被清空。
PictureBox
是如何绘制自己的?它首先绘制 background 颜色,然后在其上绘制图像。但是,由于您禁用了背景绘制,因此不会绘制背景并且不会删除之前的图像。
为什么要设置该选项?如果这不是您要查找的行为,请将其删除。
我想清理 PictureBox 图像,所以我编写了以下代码:TransparentPictureBox.Image = Nothing
,图像不会消失,并且我获得了与之前图像重叠的所有新图像。我该如何解决这个问题?
我一直在使用自定义控件,这是 class:
Public Class TransparentPictureBox
Inherits PictureBox
Public Sub New()
Me.SetStyle(ControlStyles.Opaque, True)
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, False)
End Sub
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
cp.ExStyle = cp.ExStyle Or &H20 ' Turn on WS_EX_TRANSPARENT
Return cp
End Get
End Property
End Class
写这个虽然不是最佳解决方案,但它会起作用 picturebox1.imagelocation = ""
控件完全按照您设计的方式工作。
将 ControlStyles.Opaque 选项设置为 True
,它不绘制背景:
If true, the control is drawn opaque and the background is not painted.
当您将 Image
属性 设置为 Nothing
时,您希望它被清空。
PictureBox
是如何绘制自己的?它首先绘制 background 颜色,然后在其上绘制图像。但是,由于您禁用了背景绘制,因此不会绘制背景并且不会删除之前的图像。
为什么要设置该选项?如果这不是您要查找的行为,请将其删除。