Нарисовать трапецию - C#
Формулировка задачи:
Точка начала рисования совпадает с верхней левой вершиной трапеции, а текущая точка рисования совпадает с нижней правой точкой трапеции
Решение задачи: «Нарисовать трапецию»
textual
Листинг программы
bool paint; Point pStart, pEnd; Bitmap bm; double h, raznica, nl, vp, a, angle; public double GoodDgrs(double angle) { int koef = (int)angle / 360; angle = (angle - 360 * koef) * Math.PI / 180; return angle; } angle = Convert.ToDouble(textBox1.Text); h = Math.Abs(pEnd.Y - pStart.Y); // находим высоту a = h / Math.Sin(GoodDgrs(angle)); // находим боковые стороны трапеции raznica = Math.Sqrt(a * a - h * h); // = (большее основание-меньшее основание) / 2 if (GoodDgrs(angle) <= 90 * Math.PI / 180) { nl = pStart.X - raznica; // координата по Х Нижней Левой вершины трапеции vp = pEnd.X - raznica; // координата по Х Верхней Правой вершины трапеции Point point1 = new Point((int)vp, pStart.Y); // координата Нижней Левой вершины трапеции Point point2 = new Point((int)nl, pEnd.Y); // координата Верхней Правой вершины трапеции if (point1.X > pStart.X && point2.X < pEnd.X && pStart.Y < pEnd.Y) { Point[] points = new Point[4] { pStart, point2, pEnd, point1 }; g.DrawPolygon(pen1, points); } } else if (GoodDgrs(angle) > 90 * Math.PI / 180 && GoodDgrs(angle) < 180 * Math.PI / 180) { nl = pStart.X + raznica; // координата по Х Нижней Левой вершины трапеции vp = pEnd.X + raznica; // координата по Х Верхней Правой вершины трапеции Point point1 = new Point((int)vp, pStart.Y); // координата Нижней Левой вершины трапеции Point point2 = new Point((int)nl, pEnd.Y); // координата Верхней Правой вершины трапеции if (point1.X > pStart.X && point2.X < pEnd.X && pStart.Y < pEnd.Y) { Point[] points = new Point[4] { pStart, point2, pEnd, point1 }; g.DrawPolygon(pen1, points); } } else MessageBox.Show("Угол не может быть в пределах [Pi; 2Pi]"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д