|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.04.2022, 22:32 | #1 |
Пользователь
Регистрация: 07.05.2020
Сообщений: 16
|
Как нарисовать трапецию??
Здравствуйте, вот есть класс трапеция который имеет верхнюю сторону трапеции (а), нижнюю сторону трапеции (b) и высоту (h).
Есть также метод Draw, он должен нарисовать эту трапецию з теми параметрами который введет пользователь, но что то у меня не получается его нарисовать. Нужно нарисовать там где будет клик указателя мыши, но я и так пробовал, и уже по статистическим координатам, не выходит. Помогите пожалуйста доделать этот кусочек код. Вот код: Код:
|
20.04.2022, 23:28 | #2 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Равнобедренная:
Код:
Последний раз редактировалось macomics; 20.04.2022 в 23:50. |
20.04.2022, 23:29 | #3 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,604
|
Наверное, рисовать надо по координатам вершин, и в векторной форме. Создать класс точка. И класс вектор. Трапеция задается четыремя точками(вершинами). Стороны отрисовываются как векторы.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
20.04.2022, 23:37 | #4 |
Пользователь
Регистрация: 07.05.2020
Сообщений: 16
|
macomics,
Работает, спасибо большое! |
27.05.2022, 06:45 | #5 |
Новичок
Джуниор
Регистрация: 26.05.2022
Сообщений: 9
|
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]"); } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Здравствуйте, помогите сделать программку, определить класс, описывающий равнобочную трапецию. ПаскальABC.Net | Новичокк | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 31.03.2018 14:53 |
Как нарисовать куб? | audetore | Общие вопросы Delphi | 2 | 27.01.2014 06:03 |
построить равнобедренную трапецию в делфи | Евгений77777 | Помощь студентам | 2 | 18.03.2012 23:01 |
Нарисовать в с++ | Telec | Общие вопросы C/C++ | 0 | 30.05.2010 22:14 |
Проверка на трапецию | kJlaCuk | Помощь студентам | 2 | 29.12.2008 21:06 |