清除图片框中的图像

时间:2009-09-10 09:27:14

标签: vb.net

'我在piicturebox1_paint中使用此代码

myusercolor=(sysytem.drawing.color.black)
myalpha=100
using g as graphics=graphics.fromimage(picturebox1.image)
    g.clear(color.white)
    dim currentpen as object=new pen(color.fromargb(myalpha,myusercolor),mypenwidth)
    g.drawpath(ctype(currentpen,pen),mousepath)
end using

'using in the form_load '
picturebox1.image=new bitmap(.....)

'in the clearbutton_click '
picturebox1.image=nothing

通过这个代码,我有一个问题,当我点击清除按钮时,图片框被清除。但在图片框的鼠标悬停,最后绘制的图片将出现。所以我不能画一个新的图像..

2 个答案:

答案 0 :(得分:1)

你正在吸引Picturebox1_paint事件吗?每当控件受到移动表单或在这种情况下鼠标移动到其上的影响时,这将触发。 你应该在那个事件之外画画,但哪里取决于你想要做什么。

答案 1 :(得分:0)

这是猜测,但我认为mousepath包含用户所做的“绘图”。初始化新图像时(可能在clearbutton_click事件处理程序中),您还需要清除该数据:

If Not mousepath Is Nothing Then
    mousepath.Dispose()
End If
mousepath = new GraphicsPath()

作为旁注,与您的问题没有直接关系,我建议对Pen的处理方式进行两项改进。查看以下两个代码行(来自上面的示例):

dim currentpen as object=new pen(color.fromargb(myalpha,myusercolor),mypenwidth)
g.drawpath(ctype(currentpen,pen),mousepath)

首先会创建一个新的Pen并将其存储在object变量currentpen中。由于currentpen被声明为object,因此您需要在将其传递给Pen时将其强制转换为DrawPath。如果您改为将currentpen声明为Pen,则无需执行该投射。另外,Pen实现IDisposable,因此您应该在其上调用Dispose,或将其包装到using块中:

Using currentpen as Pen = new Pen(Color.FromArgb(myalpha,myusercolor),mypenwidth)
    g.drawpath(currentpen,mousepath)
End Using