![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Процедура Arc в качестве своих аргументов требует целые числа со знаком типа integer. Это значит что вершины квадрата описанного вокруг круга могут находиться за пределами области рисования. Но начиная с определенных больших значений она отказываеться рисовать дуги. Например такой вызов не рисует ничего (можете проверить сами):
Arc(-199, -175, 801, 825, 295, 94, 73, 285); Почему? Первые два параметра точно описывают квадрат, вторые два впринципе не имеют значения т.к. точно отсекут дугу. Это сообщение отредактировал(а) S.A.G. - 22.4.2007, 14:53 -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| VladBD |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 19.11.2006 Репутация: 1 Всего: 5 |
Для больших значений там есть:
Arc(-199, -50, 801, 825, 295, 94, 73, 285); - вот так в углу нарисовалась - проблема в координатах при которых на экране ничего не появиться... |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Сумма не выходит за пределы, мало того она слишком мала по сравнению с пределом. С другой стороны я не пользователь ни Win98 ни WinMe.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
Дуга не отсекается. 2-ая пара параметров имеет значение.
Посмотри результат выполнения 2 комманд в качестве доказательства:
Это сообщение отредактировал(а) Farmazon - 22.4.2007, 20:22 -------------------- Таково моё общее мнение. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Дуга в любом случае отсекаеться когда последняя пара суть разные точки.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
Я просто не до конца разобрался с функцией...
Разобрался вроде... Последняя пара не просто разные точки... В мануале написано что 3 пара - это начальные координаты, а 4 - это конечные координаты точек дуги. То есть если двигаться против часовой стрелки, дуга будет прорисовываться от 3 к 4 точке. Т.е. Координаты этих точек должны либо лежать на вписаном элипсе, либо быть рядом (хотя можно и не рядом.... Там работает, насколько я понял, так: берётся луч выходящий из центра элипса и проходящий через точку 3, находится персечение с элипсом (пусть точка _3), потом тоже самое вычисляется с 4 точкой (_4); потом рисуется элипс против часовой стрелки от _3 до _4 точки... Вот но если точки _3 и _4 совпадут? или мало будут различаться? Тогда либо дуга вообще не рисуется, либо рисуется вся... Вот 1 случай твой... Возможно дуга и отсекается, но она мала и не влазиет в область для рисования... Я тут поэкспириментировал уменьшив масштаб в 10 раз... ... Короче зря я развёль эту демагогию, отсечённая дуга и в правду просто не влазиет в область для рисования. вот просто сместил на 40 пикселей - уже чо-то видать: form1.Canvas.Arc(-199+40, -175+40, 801+40, 825+40, 295+40, 94+40, 73+40, 285+40); -------------------- Таково моё общее мнение. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Все влазит, все должно рисоваться но не рисуеться. У меня отрисовка идет в координатах PaintBox у которого свойство Align поставлено в alClient. Каждая проставленная точка отрисовываеться и видна, следовательно и дуга между ними тоже должна быть нарисована.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
Балин! Координаты точек бывают и отрицательные (дуга проходит по отрицательным координатам, это всегда выше и левее левого верхнего угла - начала отсчёта)! Вот её и не видно, хоть ты там какой размер поставь.
-------------------- Таково моё общее мнение. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Отрицательные координаты у ограничивающего квадрата. Посмотри на координаты отсекающих точек - где ты там минусы увидел?
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
Какой ОГРАНИЧИВАЮЩИЙ КВАДРАТ?! Я ж блин расписал для чего нужна 3 и 4 пары координат! А та отсеченная часть элипса вписанного в 1 и 2 пары координат как раз и лежит в отрицательных координатах.
-------------------- Таково моё общее мнение. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
3 и 4 точки лежат на дуге. Не может быть так чтобы дуга была не видна. Точки видны - дуги нет. По такому же самому алгоритму все работает только если радиус много меньше чем 500. например 250, 300 и меньше.
-------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
ой ... мама роди меня обратно....
ВОт это посмотри раз, не веришь что не помещается....
вот правый нижний угол, отсекаемый прямыми - есть этот самая видимая часть, но без смещения... Если так нагляднее.. Добавлено через 1 минуту и 5 секунд Вкурил? Добавлено через 11 минут и 51 секунду Если что, точки 3 и 4 не лежат на дуге.... -------------------- Таково моё общее мнение. |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
Как я понял, ты просто тоже недопонимаешь, как я сначала, как работает ф-я Arc:
Вот в паинте набросал рисунок... Жирная часть - рисуемая дуга, остальное дополнительные построения; 1, 2, 3, 4 - это точки с координатами передаваемыми в параметрах, О - центр эллипса... Присоединённый файл ( Кол-во скачиваний: 5 )
d.GIF 2,06 Kb-------------------- Таково моё общее мнение. |
|||
|
||||
| S.A.G. |
|
|||
![]() не эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1339 Регистрация: 20.7.2006 Где: in ad equate Репутация: нет Всего: 19 |
Заставил себя запустить среду и проверить лично. Да, действительно, сверху но почему? Алгоритм прекрасно работает для меньших радиусов..
Добавлено через 2 минуты и 8 секунд Неправильно определяються координаты ограничивающего квадрата. -------------------- Вот она задачка: спасти себя от себя самого © Cube Sometimes good people do evil things © A Simple Plan |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
Алгоритм правильно работает...
Я ж всё наглядно изобразил.... Почитай мануал, раз не веришь... Это сообщение отредактировал(а) Farmazon - 23.4.2007, 20:02 -------------------- Таково моё общее мнение. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |