如何增加 vb.net 图形的剪辑大小

How to increase the clip size of a vb.net graphic

我正在尝试熟悉 vb.net 中的图形,并且想在不使用 Form1_Paint 方法,但使用 Button1

然而,这条线只画了大约四分之一,就停止了,如图所示:

我想我需要增加图形对象的剪辑 z 我尝试了以下但它不起作用。我还尝试减小 Clip 的大小并且按预期工作。

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        z.Clip.MakeInfinite()
        z.DrawLine(pen1, 0, 0, Me.Size.Width, Me.Size.Height)


    End Sub 

pen1z在程序开始时初始化如下:

Dim z As Graphics = CreateGraphics()
Dim pen1 = New Pen(Color.Black, 3)

我也尝试过为 x2 和 y2 使用不同的设置值,但除了使用 Form1_paint.

之外,没有任何东西可以在框外绘制

它与剪辑无关,而与您调用 CreateGraphics() 的时间有关。在创建图形时,窗体没有完全初始化,它使用的大小不正确。

当您使用 CreateGraphics() 或创建 Pen 时,您应该在完成后立即对它们显式 Dispose()。这最好通过 Using 块来完成:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Using z As Graphics = CreateGraphics()
        Using pen1 = New Pen(Color.Black, 3)
            z.DrawLine(pen1, 0, 0, Me.ClientSize.Width, Me.ClientSize.Height)
        End Using
    End Using
End Sub

不过,一般来说,以这种方式使用 CreateGraphics() 几乎总是不正确的方法。以这种方式绘制的线是临时的。把表格最小化再恢复,线就没有了