【发布时间】:2017-06-22 23:16:31
【问题描述】:
我在正在处理的应用程序中进行一些绘图时遇到了一些问题。每当我用宽 1 像素的线画一个尖角时,我的线就会越过它应该结束的点。
我无法找到任何帮助。图纸是图形路径,主要是多边形和饼图。我已经仔细检查了我的数学,这是正确的。我的代码如下。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim g As Graphics = CreateGraphics()
g.SmoothingMode = SmoothingMode.AntiAlias
Dim pens As Pen = New Pen(Color.Black, 1)
Dim pen As Pen = New Pen(Color.Red, 1)
g.DrawLine(pens, 350, 0, 350, 800)
g.DrawPie(pen, 100, 0, 500, 500, 0, 90)
g.DrawPie(pen, 100, 300, 500, 500, 0, 10)
pen = New Pen(Color.Red, 2)
g.DrawLine(pens, 700, 0, 700, 800)
g.DrawPie(pen, 450, 0, 500, 500, 0, 90)
g.DrawPie(pen, 450, 300, 500, 500, 0, 10)
End Sub
【问题讨论】:
-
笔在路径的外侧而不是内侧绘制。要么通过重新定义路径来弥补它,要么忽略它。
-
您还有多个 GDI 资源泄漏。完成后,您需要在
Graphics和Pen对象上调用Dispose()。 -
此外,如果表单被最小化或另一个表单在其前面经过,您在该按钮单击事件中所做的任何绘图都将丢失。
CreateGraphics几乎不应该被使用。 -
我了解资源泄漏,并且我需要在 OnPaint 子中进行绘制。这个应用程序是我为显示我遇到的问题而建立的。我不想过去所有的代码,所以我做了一个简单的应用程序来显示问题。