我有有趣任務使用VB.NET做一些圖。到目前爲止,我一直在讀的關於GDI +和e.graphics的一切都很奇怪。所有我想要做的就是二維繪圖:按鈕 - 重繪神祕
1)計算的一些座標點擊按鈕1
2)點擊按鈕2,從按鈕1
3)點擊按鈕1,以獲得新的座標繪製的數字線
4)點擊按鈕2繪製上一行和新行。
5)點擊按鈕3清除圖形。
所以我決定畫一個名爲panel1的面板。我有一個例行程序,在屏幕上稱爲drawlines平
Private Sub drawlines(ByVal g As Graphics, ByVal c As Color)
Dim p As New Pen(c, 1)
g.DrawLine(p, xStart, yStart, xEnd, yEnd)
p.Dispose()
End Sub
和其他程序:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
'AddHandler Panel1.Paint, AddressOf DrawLine
GraphicsHandler = Panel1.CreateGraphics
End Sub
Private Sub drawlines(ByVal g As Graphics, ByVal c As Color)
Dim p As New Pen(c, 1)
g.DrawLine(p, xStart, yStart, xEnd, yEnd)
p.Dispose()
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'GraphicsHandler = Panel1.CreateGraphics
GraphicsHandler.DrawLine(myPen, 10, 10, 200, 100)
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
xStart = CInt(Math.Ceiling(Rnd() * 200))
yStart = CInt(Math.Ceiling(Rnd() * 100))
xEnd = CInt(Math.Ceiling(Rnd() * 200))
yEnd = CInt(Math.Ceiling(Rnd() * 100))
Me.Panel1.Invalidate()
End Sub
Private Sub Panel1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles Panel1.Paint
drawlines(e.Graphics, Color.Blue)
End Sub
Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
GraphicsHandler.Clear(Color.White)
End Sub
到目前爲止,只有使用GraphicsHandler的事情是工作,但每次我試圖最小化窗口或畫一條新線,以前的線條被擦除。某種靈魂可以向我解釋適當的方式來做到上面的簡單1-5嗎?例如,我怎樣才能從按鈕調用drawlines()?
我是有點擔心的說。僅僅因爲這個改變就必須重新佈線整個程序邏輯。添加一些複雜的繪圖,如複雜的功能和瞧,在這裏我們去。不管怎麼說,還是要謝謝你。 – Ivan 2012-02-18 22:14:49
@Ivan - 這是一個鏈接,附加信息:http://bobpowell.net/picturebox.htm – 2012-02-20 14:59:02
那麼,如果沒有其他的方法,我將不得不拋棄所有基本的面向對象編程,並在VB.NET的方式。感謝您的回答。 – Ivan 2012-02-21 17:56:57