2013-04-22 44 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