|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.10.2014, 20:54 | #1 |
Пользователь
Регистрация: 23.10.2014
Сообщений: 58
|
Работа с канвой в Делфи 7 (нарисовать многоугольник по кликам мышкой)
Подскажите пожалуйста, как на канве по пикселам нарисовать произвольный многоугольник, с помощью щелчков мыши, и как определить площадь данного многоугольника, используя координаты точек многоугольника???
|
23.10.2014, 21:48 | #2 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Нужен будет массив - глобальная переменная, типа
Код:
А можно без массива, при каждом клике следующую сторону многоугольника , с помощью методов LineTo и MoveTo. |
23.10.2014, 21:53 | #3 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,581
|
С площадью проблема, ведь могут быть пересечения всевозможные.
E-Mail: arigato.freelance@gmail.com
|
23.10.2014, 22:03 | #4 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
Да и не только с площадью. Пользователю самому придётся следить за тем, чтобы не было пересечений. Иначе можнет получиться например так:
кликаешь 5 вершин правильного пятиугольника, но не по порядку, а в последовательности - 1-я вершина, 3-я, 5-я, 2-я, 4-я. Нажимаешь ОК, и программа рисует .. звезду, то есть 10-то угольник . |
24.10.2014, 09:06 | #5 |
Пользователь
Регистрация: 23.10.2014
Сообщений: 58
|
А как правильно использовать массив - глобальная переменная и события MouseUp или MouseDown? Можете написать текст программы? А то что-то не получается(
|
24.10.2014, 09:30 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Аника, вы поняли, что основная ваша проблема не нарисовать многоугольник по точкам, а найти его площадь? В случае взаимопересечений сторон это далеко не тривиальная задача!
для примера, за минуту набросал два многоугольника в гр.редакторе. Для удобства я взял полигон с заливкой. Теперь, хотя бы видно, площадь чего надо найти. Если эту заливку убрать (а у Вас на канве этой заливки не будет - то аадача становится не только не тривиально, но и зрительно не очевидной... mnogougol.jpg А нарисовать многоугольник по кликам мышки - это, как раз, не сложно! |
24.10.2014, 10:06 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Как понял не залитые участки не входят в расчет площади. А на каком основании? Какое-то правило есть?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
24.10.2014, 11:28 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Я выбрал рисование полигона с заливкой, дальше уже сам редактор высчитывал, какие области включены в полигон (и поэтому заливаются), а какие - внешние, поэтому без заливки. Важно то, что точки в редакторе ставятся последовательно (очевидно, что от порядка обхода вершин можно получить совершенно разные многоугольники)! Возвращаясь к задаче. Я бы лично, если бы делал подобную задачу, вообще ввёл ограничения на многоугольники с самопересечением сторон. Прямо во время задания вершин проверял и, если очередная вершина приводит к тому, что любые две стороны пересекаются, ругался бы сообщением и эту вершину НЕ ставил. Тогда задача резко упрощается! |
|
24.10.2014, 11:41 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А может и не надо ограничений. Вот интересная статья по поводу вычисления площади самопересекающегося многоугольника. Никогда не думал, что такие хитрости
http://stu.sernam.ru/book_klein2.php?id=5
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
24.10.2014, 13:05 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Но я, например, по этой статье сразу код написать не готов. Но, с другой стороны, мне и не надо этот код писать - это же проблемы TC. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
программа на паскале, в которой можно нарисовать несколько окружностей произвольного радиуса мышкой в графическом режиме | А1иночка | Помощь студентам | 9 | 11.04.2012 00:19 |
Работа с Канвой, Шейпы | Arkuz | Общие вопросы Delphi | 0 | 17.12.2010 01:58 |
Работа с канвой Delphi (Математический расчёт) | Dancewithevil | Помощь студентам | 1 | 20.05.2010 10:13 |
нарисовать стрелку на делфи | studentOne | Помощь студентам | 7 | 17.11.2009 07:36 |
Работа с мышкой | Klio | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 03.05.2008 22:37 |