gpt4 book ai didi

c# - 使用 DrawPolygon 在 C# 中创建单个六边形

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:14 25 4
gpt4 key购买 nike

好吧,我已经创建了一个三角形,但我一辈子都无法计算出坐标来创建一个简单的六边形,

Point[] shape = new Point[3];        
shape[0] = new Point(200, 100);
shape[1] = new Point(300, 200);
shape[2] = new Point(100, 200);

这是一个三角形,但我无法计算出六边形的 x 和 y 值,这听起来像是一个简单的问题,但我的大脑今天无法正常工作,下面是我无法计算出的六边形数组出值(value)观。

Point[] shape = new Point[6];        
shape[0] = new Point(0, 0);
shape[1] = new Point(0, 0);
shape[2] = new Point(0, 0);
shape[3] = new Point(0, 0);
shape[4] = new Point(0, 0);
shape[5] = new Point(0, 0);

任何帮助都将非常感谢!

最佳答案

既然我已经写了评论,我想我应该用一些真实的代码来证明这一点。

我创建了一个 WinForms 应用程序,其中包含一个可以在其上绘图的 Panel 对象。然后我覆盖了它的 Paint 事件来绘制一个六边形。

    private void panel1_Paint(object sender, PaintEventArgs e)
{
var graphics = e.Graphics;

//Get the middle of the panel
var x_0 = panel1.Width / 2;
var y_0 = panel1.Height / 2;

var shape = new PointF[6];

var r = 70; //70 px radius

//Create 6 points
for(int a=0; a < 6; a++)
{
shape[a] = new PointF(
x_0 + r * (float)Math.Cos(a * 60 * Math.PI / 180f),
y_0 + r * (float)Math.Sin(a * 60 * Math.PI / 180f));
}

graphics.DrawPolygon(Pens.Red, shape);
}

然后绘制

hexagon

正如我所说,关键是将六边形视为“离散”圆。这些点都被计算为位于完美圆的外部,然后用直线连接。您可以使用此技术创建所有常规 n-Point 形状(五边形,例如 5-regular 形状;))

因此,您只需“刻画”圆中的 6 个点即可得到六边形,如下图所示,具有规则的 5 点形状:

hexa2

然后请记住,您可以根据极坐标 (r, phi) 计算点的 (x,y) 坐标

coordinate_trafo

enter image description here

您还可以向其添加偏移量 offset ,在我的例子中是我正在绘制的框架的中心。

关于c# - 使用 DrawPolygon 在 C# 中创建单个六边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37236439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com