#c_sharp #net #windows
Как на c# нарисовать звезду в круге используя picturebox?
private void OnPaint()
{
int n = 5; // число вершин
double R = 25, r = 50; // радиусы
double alpha = 0; // поворот
double x0 = 60, y0 = 60; // центр
Graphics e = pictureBox1.CreateGraphics();
PointF[] points = new PointF[2 * n + 1];
double a = alpha, da = Math.PI / n, l;
for (int k = 0; k < 2 * n + 1; k++)
{
l = k % 2 == 0 ? r : R;
points[k] = new PointF((float)(x0 + l * Math.Cos(a)), (float)(y0 + l
* Math.Sin(a)));
a += da;
}
e.DrawLines(Pens.Black, points);
e.DrawEllipse(Pens.Green, 60, 60, 200, 200);
}
private void button1_Click(object sender, EventArgs e)
{
OnPaint();
}
}
}
У меня получилось только вот это:
Ответы
Ответ 1
Вы вызываете DrawEllipse(), передавая вторым и третьим аргументом координаты центра: double x0 = 60, y0 = 60; ^^ ^^ // ... e.DrawEllipse(Pens.Green, 60, 60, 200, 200); ^^ ^^ Однако согласно документации функция ожидает там координаты верхнего левого угла: public void DrawEllipse (System.Drawing.Pen pen, int x, int y, int width, int height); ^ ^ Можно, конечно, просто поправить числа. Но лучше вообще от них отказаться, динамически подгоняя круг под звезду: e.DrawEllipse(Pens.Green, x0 - R, y0 - R, R * 2, R * 2)
Комментариев нет:
Отправить комментарий