![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Волод |
|
||||||
|
Unregistered |
Пытаюсь разобраться с понятием логической (ЛКС) и физической (ФКС) систем координат при использовани GDI-функций рисования типа Rectangle, Ellipse etc, однако я не могу разобраться, как точно определить текущее направление осей для этих ситем координат в режимах MM_ISOTROPIC, MM_ANISOTROPIC. Вот пример кода:
Если я правильно все понимаю, то направление задается через знак аргумента функций SetWindow/SetViewportExtEx. Например, в приведенном примере ось Y ФКС направлена сверху-вниз, потому-что функции SetViewportExtEx передается отрицательный аргумент (-cyClient). Поэтому, чтобы нарисованная фигура была видна в клиентской области, следует вызвать функции рисования с отрицательным (логическим)Y-аргументом, который будет преобразован в положительный Y-параметр физической точки (пикселя), и соответственно попадет в клиенсткую область окна. Моя логика работает и на таком коде:
Из примера видно, что я сделал одинаковым направление осей обеих систем координат. То есть по Y-оси и ЛКС, и ФКС возврастает СВЕРХУ-вниз, соответсвенно для вывода излбражений, начиная с левого верхнего угла, надо задавать положительные аргументы функции рисования. Тогда, следуя этой же логике, я вновь задал одинаковое направление осей координат обеих систем, но по другому – так, чтобы по Y-оси ЛКС и ФКС возврастали СНИЗУ-вверх, вот код:
Я ожидал, что теперь, задавая отрицательное значение Y-аргумента функции рисования, я таким образом нарисую фигуры в клиенсткой области, однако этого не произошло, и я сколько не бился, так и не смог понять почему |
||||||
|
|||||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Я тоже всегда путаюсь с этим делом, но знаю одно: направление осей ФКС не меняется, у дисплея ось Y всегда направлена вниз. Давая отрицательный знак, в любой из функций, вы меняете только направление логической оси.
Соответственно, в вашем последнем примере Y-оси координат направлены таки вниз. А на экране ничего нет, так как отображаются только положительные Y. Кроме направления и масштаба осей, есть еще точка совмещения вьюпорта и логической системы координат. Она устанавливается функциями SetViewport|WIndowOrg. А еще мне кажется, что тема немного не на месте. Это уже к модератору... -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |