2009-09-10 18 views
0

「我在piicturebox1_paint在PictureBox

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 

使用此代碼這段代碼我有一個問題,當我點擊清除按鈕的圖片框在圖片框的鼠標懸停最後cleared.but清除圖像所以我不能畫一個新的圖像..

+0

任何人都知道請爲我回答。謝謝 – user85511 2009-09-10 09:39:28

回答

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) 

這首先在object變量currentpen創建一個新的Pen並將其存儲。由於currentpen被宣佈爲object,因此在將其傳遞到DrawPath時,您需要將其轉換爲Pen。如果您將currentpen聲明爲Pen,則不需要執行此操作。此外,Pen實現IDisposable所以你應該調用Dispose它,或將其包裝成一個using塊:

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

你在Picturebox1_paint事件在畫什麼?每當控件受到移動窗體或在這種情況下移動鼠標等事件的影響時,它都會觸發。 您應該在該事件之外進行繪製,但取決於您要做的事情。