Новичок: Device Context
От: senatc Россия http://www.clubwise.com
Дата: 10.04.02 09:15
Оценка:
Доброго дня всем!

Продолжаю изучать VC++6. Пока все вроде получается. Написал небольшую программулю, которая работает с функциями WinAPI (может это в WinAPI надо?) и рисует на экране разные примитивы. Все работает нормально. Написал я три функции:

1. Paint — собственно она и рисует (вызывается из 2 и 3)
2. Draw — вывод на экран
3. Print — печать

Как я сказал, все это работает замечательно. Теперь проблема. Когда я делаю вывод на экран, все совсем красиво. Но вот когда я делаю вывод на принтер, все тоже конечно красиво и даже можно разглядеть. Я получаю малюсенький квадратик примерно 7х10 мм. На сколько я понимаю, рисование по точкам на экране и на принтере происходит как есть — те, 100 точек экрана и 100 точек принтера — разные. Благодаря разрешению? Что делать? Как вообще это решается. Другими словами — как получить "Что вижу, то и получаю".

Правда, я попытался исправить это путем доп. переменной Scale. При выводе на экран Scale=1, При выводе на принтер идет пересчет всех координат с Scale=5. А как правильно? Со Scale, конечно, все работает, но уж слишком много работы с пересчетами. Практически уверен — Есть способ лучше!

Сергей
---
Sergey V. Natarov
Re: Новичок: Device Context
От: al Россия  
Дата: 10.04.02 09:38
Оценка:
Способ конечно есть. В GDI можно работать с разными единицами измерернния. Для экрана удобно работать с пикселами, а для принтера, например с дюймами или твипапи. Для переключения между режимами следует использовать, например, функцию SetMapMode и функции SetWindowExtEx и SetViewportExtEx. Подробности в MSDN 'Coordinate Spaces and Transformations'


 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.