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