Нарисовать трапецию - 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]");
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5