2013-04-22 43 views
1

我正在嘗試使用不工作的按鈕創建一條線。按鈕畫線vb.net不工作?

如果我使用下面的代碼,

Imports System.Drawing 
Imports System.Drawing.Drawing2D 
Imports System.Windows.Forms 

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) 
     Dim g As Graphics = e.Graphics 
     Dim pn As New Pen(Color.Blue) 
     Dim pt1 As New Point(30, 30) 
     Dim pt2 As New Point(110, 100) 
     g.DrawLine(pn, pt1, pt2) 
End sub 

它完美,但如果我只想畫一個按鈕被點擊,如後,

Imports System.Drawing 
Imports System.Drawing.Drawing2D 
Imports System.Windows.Forms 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

     Dim g As Graphics = e.Graphics 
     Dim pn As New Pen(Color.Blue) 
     Dim pt1 As New Point(30, 30) 
     Dim pt2 As New Point(110, 100) 
     g.DrawLine(pn, pt1, pt2) 

    End Sub 

它說:「‘圖形’不是'System.EventArgs'的成員。

我也嘗試改變:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

要:

Private Sub Button1_Click(ByVal sender As graphics.Object, ByVal e As System.EventArgs) Handles Button1.Click 

和幾個simular變化(許多列出),但我得到的錯誤響應alsorts。

那麼如何用e.graphics點擊一個按鈕畫一條線?

回答

0

您需要對錶單的Graphics上下文進行引用(我假設這裏是WinForms)。

你將在點擊按鈕的頂部添加此行的最簡單方法:

Dim g As Graphics = Me.CreateGraphics 

繪製圖形比這更復雜,因爲你真的應該堅持什麼你是畫到內存中,再當OnPaint事件觸發時,如果您繪製的內容包含在PaintEventArgse.ClipRectangle屬性中,但是上面的代碼行應該讓您現在開始,則必須將其撤回。

0

您使用的兩個事件具有不同的EventArgs。 Click EventArgs具有關於點擊和PaintEventArgs關於信息繪製內容的信息。

您可以調用重新繪製按鈕並使用onPaint方法。這是一種很好的編程風格。將事件與相應的內容配對。油漆畫。點擊以點擊。

Private drawLine as boolean = false 

Private Sub Button1_Paint(sender As Object, e As PaintEventArgs) Handles Button1.Paint 
    If drawLine then 
    Dim g As Graphics = e.Graphics 
    Dim pn As New Pen(Color.Blue) 
    Dim pt1 As New Point(30, 30) 
    Dim pt2 As New Point(110, 100) 
    g.DrawLine(pn, pt1, pt2) 
    End if 
End sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    drawLine = true 
    Button1.refresh() 
End Sub