В данном примере строится многоугольник по количеству сторон n, координатам центра многоугольника и расстоянию R от центра многоугольника до его стороны. Все эти данные вводятся пользователем и начинают обрабатываться по нажатию кнопки "Построить". Программа позволяет рисовать на одной форме многоугольники с различными параметрами.
Функция button1_Click получает входные параметры и обрабатывает их на корректность. В случае некорректных данных: отрицательного количества сторон или отрицательного расстояния программа сообщает о некорректности данных (в случае ввода отрицательных координат многоугольник смещается относительно области видимости и при определённых значениях может полностью оказаться вне зоны видимости(вне формы), как и в случае ввода достаточно большого значения расстояния). Если данные, введённые пользователем корректны, то управление переходит к функции lineAngle, которая производит непосредственно построение многоугольника.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace pravilnyy_mnogougolnik { public partial class Form1 : Form { public Form1() { InitializeComponent(); } int n;//количество сторон int R;//расстояние от центра до стороны Point Cntr;//центр Point[] p; //массив точек будущего многоугольника //создаём массив точек нашего многоугольника private void lineAngle(double angle) { double z = 0; int i=0; while (i<n+1) { p[i].X=Cntr.X+(int)( Math.Round(Math.Cos(z/180*Math.PI)*R) ); p[i].Y=Cntr.Y-(int)( Math.Round(Math.Sin(z/180*Math.PI)*R) ); z=z+angle; i++; } } private void button1_Click(object sender, EventArgs e) { label10.Text = ""; //получаем входные данные и проверяем их на корректность n = Convert.ToInt32(textBox4.Text); R = Convert.ToInt32(textBox5.Text); Cntr.X = Convert.ToInt32(textBox6.Text); Cntr.Y = Convert.ToInt32(textBox7.Text); if (n < 0 || R < 0) label10.Text = "Неверные входные данные!"; else //входные данные корректны, рисуем многоуголник { p = new Point[n + 1]; lineAngle((double)(360.0 / (double)n)); int i = n; Graphics g = pictureBox2.CreateGraphics(); while (i > 0) { g.DrawLine(new Pen(Color.Black, 2), p[i], p[i - 1]); i = i - 1; } } } //оставляем нарисованный многоугольник, обнуляем входные значения для нового ввода private void button2_Click(object sender, EventArgs e) { textBox4.Text = "0"; textBox5.Text = "0"; textBox6.Text = "0"; textBox7.Text = "0"; label10.Text = ""; } //стираем всё нарисованное, не обнуляя последние входные данные private void button3_Click(object sender, EventArgs e) { pictureBox2.Image = null; label10.Text = ""; } } }
Прикрепленный файл | Размер |
---|---|
pashaeva_mavile_pravilnyy_mnogougolnik.zip | 57.47 кб |