不可能干净的 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 颜色,然后在其上绘制图像。但是,由于您禁用了背景绘制,因此不会绘制背景并且不会删除之前的图像。

为什么要设置该选项?如果这不是您要查找的行为,请将其删除。