.net 如何画三角形?

.net 如何画三角形?,.net,vb.net,math,geometry,gdi+,.net,Vb.net,Math,Geometry,Gdi+,我继承了Control类,创建了一个用于放置某些形状的自定义用户控件,我想在控件中绘制一个三角形,我正在三角形中绘制一个内边框,但我的脑袋被指针弄糊涂了,我找不到正确的点计算方法(数学不是我的专长)然后取而代之的是一个三角形,我得到了一个丑陋的数字: 下面是代码中画线的相关部分,我认为问题在于第四个点f 注释 p对象是我用来画线的Pen实例 上图中属性网格的BorderWidth属性仅用于设置p.Width 代码 数组的最后一个元素必须与第一个元素相同(以关闭图形) 画三角形通常需要3个点。为

我继承了Control类,创建了一个用于放置某些形状的自定义用户控件,我想在控件中绘制一个三角形,我正在三角形中绘制一个内边框,但我的脑袋被指针弄糊涂了,我找不到正确的点计算方法(数学不是我的专长)然后取而代之的是一个三角形,我得到了一个丑陋的数字:

下面是代码中画线的相关部分,我认为问题在于第四个
点f

注释

p
对象是我用来画线的
Pen
实例

上图中属性网格的
BorderWidth
属性仅用于设置
p.Width

代码


数组的最后一个元素必须与第一个元素相同(以关闭图形)


画三角形通常需要3个点。为什么你有4分?不,你需要4分。顶部->底部1->底部2->顶部。如果使用单独的线,则只需要3组,但如果将图形作为路径,则需要4个点。然而,这是填充路径。。。。可能只需要3个。谢谢,但没有按预期工作,底线没有画出来,可能画在控件的边界之外。。。我不知道,但不可见如果
p
Pen
为什么要在计算中使用它的
Width
。。。所有其他线条都很好。好的,你能说出或者更好地展示你想要画什么吗?一个普通的三角形。在另一个问题中,您可以看到一个三角形的图像(在图像上使用MSPaint绘制),其中3个边框可见:,使用您的解决方案,底线/边框不会绘制在边框内
Case Figures.Triangle
    Dim trianglePoints As PointF() =
        {
            New PointF(p.Width / 4.0F, CSng(Me.Height) + (p.Width / 2.0F)),
            New PointF(CSng(Me.Width) / 2.0F, p.Width),
            New PointF(CSng(Me.Width) - (p.Width / 4.0F), CSng(Me.Height) + (p.Width / 2.0F)),
            New PointF(-CSng(Me.Height) + p.Width, CSng(Me.Width / 2) - p.Width)
        }

    Using gp As New Drawing2D.GraphicsPath(FillMode.Alternate)

        gp.AddLines(trianglePoints)
        gp.CloseFigure()

        With e.Graphics

            If Not Me._InnerColor = Color.Transparent Then

                Using b As New SolidBrush(Me._InnerColor)
                    .FillPath(b, gp)
                End Using

            End If

            .DrawLines(p, trianglePoints)

        End With

    End Using
Dim trianglePoints As PointF() =
    {
        New PointF(p.Width / 2.0F, CSng(Me.Height) - (p.Width / 2.0F)),
        New PointF(CSng(Me.Width) / 2.0F, p.Width / 2F),
        New PointF(CSng(Me.Width) - (p.Width / 2.0F), CSng(Me.Height) - (p.Width / 2.0F)),
        New PointF(p.Width / 2.0F, CSng(Me.Height) - (p.Width / 2.0F))
    }