Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рисование в отрицательной области 
V
    Опции темы
vinter
Дата 29.4.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 4
Всего: 56



устанавливаю вывод с помощью
Код

dcMem.SetMapMode(MM_ANISOTROPIC);
dcMem.SetViewportOrg(rect.left + 20,  nS0);
dcMem.SetViewportExt(1, -1);

nS0 - половина по Y
вопрос в следующем как мне рисовать ниже чем у меня заявлен 0 по Y, т.е в отрицательной области


--------------------
Мой блог
PM MAIL WWW   Вверх
Earnest
Дата 2.5.2007, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



А кто мешает указывать отрицательные координаты?


--------------------
...
PM   Вверх
vinter
Дата 2.5.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 4
Всего: 56



указываю, не рисует


--------------------
Мой блог
PM MAIL WWW   Вверх
Earnest
Дата 2.5.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Если учесть пояснение к параметрам SetViewPortExt:
Цитата

Specifies the x-extent of the viewport (in device units). 

То интересная картина получается: ты устанавливаешь размеры области вывода размером 1 * 1 пиксел. Не маловато?

Добавлено через 4 минуты и 38 секунд
А еще, по-моему, немножко не хватает SetWindowExt... именно они на пару устанавливают преобразование координат...
Хоть что-то у тебя рисуется вообще? И то ли, что надо?


--------------------
...
PM   Вверх
vinter
Дата 2.5.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 4
Всего: 56



Цитата(Earnest @  2.5.2007,  20:45 Найти цитируемый пост)
То интересная картина получается: ты устанавливаешь размеры области вывода размером 1 * 1 пиксел. Не маловато?

не так, это указание что обласоть вывода будет в масштаюе 1:1, если допустим сделать 2,2 то будет увеличен в два раза, WindowExt наоборот уменьшает изображение
Цитата(Earnest @  2.5.2007,  20:45 Найти цитируемый пост)
Хоть что-то у тебя рисуется вообще?

ну например график синуса возьмем, отрицательной области не видно:(


--------------------
Мой блог
PM MAIL WWW   Вверх
Earnest
Дата 3.5.2007, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Хм... а из написанного следует не это... Я всегда исходила из того, что то, что указано в WindowExt отображается на ViewportExt... Ну да ладно, может так тоже работает, раз ты говоришь, что рисуется...
Значит, положительная часть синуса рисуется, а отрицательная - нет? А ось посреди окна? Тогда можно предположить, что все же viewport это дело отсекает... 

Все-таки, я думаю, что SetWindowExt не хватает. Вот цитата из MSDN (статья Mapping Modes and Translations):
Цитата

The window and viewport extents establish a ratio or scaling factor used in the page-space to device-space transformations. For the six predefined mapping modes (MM_HIENGLISH, MM_LOENGLISH, MM_HIMETRIC, MM_LOMETRIC, MM_TEXT, and MM_TWIPS), the extents are set by the system when SetMapMode is called. They cannot be changed. The other two mapping modes (MM_ISOTROPIC and MM_ANISOTROPIC) require that the extents are specified. This is done by calling SetMapMode to set the appropriate mode and then calling the SetWindowExtEx and SetViewportExtEx functions to specify the extents. In the MM_ISOTROPIC mapping mode, it is important to call SetWindowExtEx before calling SetViewportExtEx.




--------------------
...
PM   Вверх
vinter
Дата 3.5.2007, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 4
Всего: 56



Earnest, пробовалsmile и MSDN читал, и понимаю что ты имеешь ввиду сам так думал, а потом нашел описание ф-ий на русском и все оказалось не так smile
оказалось что это масштабируемость..
Цитата(Earnest @  3.5.2007,  07:09 Найти цитируемый пост)
Значит, положительная часть синуса рисуется, а отрицательная - нет? А ось посреди окна?

угу
Цитата(Earnest @  3.5.2007,  07:09 Найти цитируемый пост)
Тогда можно предположить, что все же viewport это дело отсекает... 

а не знаешь как его заставить этого не делать?


--------------------
Мой блог
PM MAIL WWW   Вверх
Earnest
Дата 8.5.2007, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(vinter @  3.5.2007,  10:28 Найти цитируемый пост)
а потом нашел описание ф-ий на русском и все оказалось не так

Я бы все таки MSDN Больше доверяла, чем каким-то там описаниям на русском...

С MM_ANISOTROPIC дела как-то не имела, только с MM_ISOTROPIC, но сути это не должно менять. Насколько помню, все делала как MSDN велит: вьюпорт на нужную часть окна, WindowExt на диапазон логических координат и все вроде получилось... Но было давно, и, насколько помню, тоже как-то не сразу получилось.
Я лично всегда рисую в режиме MM_TEXT, а координаты пересчитываю сама, тем более координаты у меня все больше с плавающей точкой, и мне от GDI-шных координатных систем не жарко, не холодно.
Начала это делать еще в 95-98 Виндах, когда GDI-координаты не должны были превышить 16 разрядов и это дело приходилось проверять и отсекать. Так и продолжаю: система координат - любая, какую душа пожелает, и никаких заморочек со всеми этим вьюпортами и экстентами.
Чего и всем желаю.


--------------------
...
PM   Вверх
vinter
Дата 11.5.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 4
Всего: 56



я б с удовольствием, только вот че то не придумал нормального способа рисовать графики с плавающей точкой, никак нормально не получается :(
вот и решил юзать готовые компоненты.. а эта тема закрыта.


--------------------
Мой блог
PM MAIL WWW   Вверх
Earnest
Дата 11.5.2007, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(vinter @  11.5.2007,  20:10 Найти цитируемый пост)
только вот че то не придумал нормального способа рисовать графики с плавающей точкой

А чего там придумывать? 
Допустим, есть у тебя полилиния с плавающими координатами.  
И есть окно, в котором эту полилинию нужно нарисовать. 
Исходя из логических размеров окна (не в смысле GDI, а в смысле координат нашей полилинии) определяем преобразование координат (достаточно просто сдвиг-масштаб, но я предпочитаю афинное). 
Преобразуем каждую точку нашей полилинии (и заодно округляем до целых, конечно). 
Вызываем Polyline.


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0641 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.