不可能干净的PictureBox

时间:2015-02-03 14:40:16

标签: vb.net picturebox

我想要清理PictureBox图像,所以我制作了这段代码:TransparentPictureBox.Image = Nothing,图像不会消失,我会获得与之前重叠的所有新图像。我该如何解决这个问题?

initial image

overlapping

我继续使用自定义控件,这是类:

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

2 个答案:

答案 0 :(得分:1)

控件的工作方式完全符合您的设计。

ControlStyles.Opaque选项设置为True时,它不会绘制其背景:

  

如果为true,则控件将被绘制为不透明且背景未绘制。

当您将Image属性设置为Nothing时,您希望将其清空。 PictureBox如何吸引自己呢?它首先绘制背景颜色,然后在其上绘制图像。但是,由于您已禁用背景绘制,因此不会绘制背景,也不会删除先前的图像。

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

答案 1 :(得分:-1)

写这个虽然这不是最佳解决方案,但它会起作用     picturebox1.imagelocation =“”