Доброго дня всем!
Продолжаю изучать VC++6. Пока все вроде получается. Написал небольшую программулю, которая работает с функциями WinAPI (может это в WinAPI надо?) и рисует на экране разные примитивы. Все работает нормально. Написал я три функции:
1. Paint — собственно она и рисует (вызывается из 2 и 3)
2. Draw — вывод на экран
3. Print — печать
Как я сказал, все это работает замечательно. Теперь проблема. Когда я делаю вывод на экран, все совсем красиво. Но вот когда я делаю вывод на принтер, все тоже конечно красиво и даже можно разглядеть. Я получаю малюсенький квадратик примерно 7х10 мм. На сколько я понимаю, рисование по точкам на экране и на принтере происходит как есть — те, 100 точек экрана и 100 точек принтера — разные. Благодаря разрешению? Что делать? Как вообще это решается. Другими словами — как получить "Что вижу, то и получаю".
Правда, я попытался исправить это путем доп. переменной Scale. При выводе на экран Scale=1, При выводе на принтер идет пересчет всех координат с Scale=5. А как правильно? Со Scale, конечно, все работает, но уж слишком много работы с пересчетами. Практически уверен — Есть способ лучше!
Сергей
Способ конечно есть. В GDI можно работать с разными единицами измерернния. Для экрана удобно работать с пикселами, а для принтера, например с дюймами или твипапи. Для переключения между режимами следует использовать, например, функцию SetMapMode и функции SetWindowExtEx и SetViewportExtEx. Подробности в MSDN 'Coordinate Spaces and Transformations'