Vb.net 在窗体上画一条对角线,在窗体调整大小时重新绘制

Vb.net 在窗体上画一条对角线,在窗体调整大小时重新绘制,vb.net,drawing,gdi,Vb.net,Drawing,Gdi,我刚从GDI开始-第一行还可以-但是第二行。。。。 我想画一条从(0,0)到(MaxWidth,MaxHeight)的简单对角线 这是我的密码: Public Class Form1 Dim g As Graphics = Me.CreateGraphics Dim stift As New Pen(Brushes.Black, 3) Private Sub Button1_Click(sender As Object, e As EventArgs) Handles

我刚从GDI开始-第一行还可以-但是第二行。。。。 我想画一条从(0,0)到(MaxWidth,MaxHeight)的简单对角线

这是我的密码:

Public Class Form1
    Dim g As Graphics = Me.CreateGraphics
    Dim stift As New Pen(Brushes.Black, 3)

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim x1 = 0, y1 = 0, x2 = Me.Size.Width, y2 = Me.Size.Height
        g.DrawLine(stift, x1, y1, x2, y2)
    End Sub
End Class
但该行在第一个未更改窗体的MaxWidth和MaxHeight处结束。
有人知道吗?

在Paint()事件中绘制线条并允许使用按钮进行切换的快速示例:

Public Class Form1

    Private x1 As Integer = 0
    Private y1 As Integer = 0
    Private x2 As Integer = 0
    Private y2 As Integer = 0

    Private DrawLine As Boolean = False
    Private stift As New Pen(Brushes.Black, 3)

    Public Sub New()
        InitializeComponent()

        x2 = Me.ClientSize.Width
        y2 = Me.ClientSize.Height
    End Sub

    Private Sub Form1_SizeChanged(sender As Object, e As EventArgs) Handles MyBase.SizeChanged
        x2 = Me.ClientSize.Width
        y2 = Me.ClientSize.Height
        Me.Refresh()
    End Sub

    Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
        If DrawLine Then
            Dim g As Graphics = e.Graphics
            g.DrawLine(stift, x1, y1, x2, y2)
        End If
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        DrawLine = Not DrawLine
        Me.Refresh()
    End Sub

End Class

这种方法允许您从其他地方更改坐标并调用Refresh()来更新屏幕。对于不止一行,考虑使用一个包含COORD的信息的列表(),然后在PrUnter()事件中迭代它。< /P>去掉创建图形并使用Prand事件。另外,使用ClientSize作为宽度和高度。