Преобразование шестиугольника в треугольник с помощью System.Drawing
Итак, у меня есть следующий код, но когда он проходит некоторые шаги, он начинает не заполнять фигуру и в конце концов он не заполняет ее вообще. Я пробовал некоторые изменения, такие как использование линий, а не полигонов, но это не помогло. Не знаю, как исправить, пожалуйста, помогите.
Graphics gr = CreateGraphics();
Pen p = new Pen(color);
float x1 = 100, y1 = 100,
x2 = 50, y2 = 200,
x3 = 100, y3 = 300,
x4 = 200, y4 = 300,
x5 = 250, y5 = 200,
x6 = 200, y6 = 100,
n = 30;
int px1 = 800, py1 = 431,
px2 = 1000, py2 = 431,
px3 = 900, py3 = 231;
float edx1 = ((px3 - x6) / n), edy1 = ((py3 - y6) / n),
edx2 = ((px2 - x1) / n), edy2 = ((py2 - y1) / n),
edx3 = ((px1 - x2) / n), edy3 = ((py1 - y2) / n),
edx4 = ((px3 - x3) / n), edy4 = ((py3 - y3) / n),
edx5 = ((px2 - x4) / n), edy5 = ((py2 - y4) / n),
edx6 = ((px1 - x5) / n), edy6 = ((py1 - y5) / n);
SolidBrush colorBrush = new SolidBrush(color);
gr.Clear(Form1.DefaultBackColor);
for (int i = 0; i < n; i++)
{
if (checkBox1.Checked == false) {
gr.Clear(Form1.DefaultBackColor);
}
x1 = (float)(x1 + edx2);
y1 = (float)(y1 + edy2);
x2 = (float)(x2 + edx3);
y2 = (float)(y2 + edy3);
x3 = (float)(x3 + edx4);
y3 = (float)(y3 + edy4);
x4 = (float)(x4 + edx5);
y4 = (float)(y4 + edy5);
x5 = (float)(x5 + edx6);
y5 = (float)(y5 + edy6);
x6 = (float)(x6 + edx1);
y6 = (float)(y6 + edy1);
PointF point1 = new PointF(x1, y1);
PointF point2 = new PointF(x2, y2);
PointF point3 = new PointF(x3, y3);
PointF point4 = new PointF(x4, y4);
PointF point5 = new PointF(x5, y5);
PointF point6 = new PointF(x6, y6);
PointF[] curvePoints = { point1, point2, point3, point4, point5, point6 };
gr.DrawPolygon(p, curvePoints);
if (checkBox1.Checked == false)
{
gr.FillPolygon(colorBrush, curvePoints);
}
Thread.Sleep(sleepDuration);
}