仅从屏幕中删除一个绘制的图像

时间:2014-06-22 19:02:48

标签: .net vb.net image

我使用此代码在我的表单上绘制了2张图片:

Public Class drawimage

Dim image = Image.FromFile("E:\1.png")
Dim image2 = Image.FromFile("E:\2.png")
Private Sub testbutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles testbutton.Click
Me.CreateGraphics.DrawImage(image, 0, 0, 100, 100)
Me.CreateGraphics.DrawImage(image2, 200, 200, 100,100)
end sub

我想以编程方式删除其中一个图片,所以我尝试使用此代码:

Me.CreateGraphics.Clear(Me.BackColor)

但这清除了我的所有图像。我可以只清除一张图片吗?一个名为“图像”的人。

2 个答案:

答案 0 :(得分:1)

绘制和绘制要保留的内容需要在Paint事件中完成。这样,每当Windows告诉您的表单重新绘制时,您的图像就会被绘制出来。事实上,如果另一种形式浮在它上面,它们将会丢失。此外,它使您不必创建图形对象。

要摆脱一个,你需要一面旗帜。这样的事情会起作用:

Private drawBoth As Boolean = True
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    drawBoth = Not drawBoth
    Me.Invalidate
End Sub

Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    e.Graphics.DrawImage(img, 0, 0, 100, 100)
    If drawBoth Then
        e.Graphics.DrawImage(img2, 200, 200, 100, 100)
    End If

End Sub

Image是位图或图片的错误名称,因为.NET中有一个您甚至使用的图像类型。在您的图片和System.Drawing.Image

之间,事情(包括您)可能会感到困惑

答案 1 :(得分:0)

你可以在上面画一个矩形。

Me.CreateGraphics.FillRectangle(new SolidColorBrush(Me.BackColor), 0, 0, 100,100)