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