#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)
Комментариев нет:
Отправить комментарий