Шаг 81 - Распечатка и предварительный просмотр

	От: Dmitry Panferov 
Дата: 10 января 2000 г. 3:51
Тема: MFCByStep - question
Хотелось бы еще поподробнее узнать о печати на принтер
т.к. известно что на экране мы все измеряем пикселами
а на печать уже все идет в физических величнах
Поэтому мне пришлось практически полностью переделывать функцию
OnDraw чтобы распечатать данные на принтер

Создание проекта

Первое, что нужно сделать - это реализовать проект на основе MFC AppWizard, который поддерживает предварительный просмотр. Для этого на шаге 4 волшебника необходимо установить Print and Priview опцию.

81_1.gif (5125 b)

Описание

С этого момента всё, что Вы будете рисовать в функции OnDraw класса вида, всё будет отражаться в окне предварительного просмотра. Только Вы должны будете заметить, что размеры далеко не совпадают. Это связанно с тем, что контекст устройства по умолчанию работает с графикой в единицах MM_TEXT. Так как принтер и экран могут иметь разное количество единиц на страницу, это порождает и проблемы масштабирования.

При работе с графикой используйте режим MM_LOENGLISH. Вообще-то их несколько. Вот перечисление режимов.

MM_HIENGLISH	0.001 дюйма
MM_HIMETRIC 0.01 мм
MM_ISOTROPIC определяет пользователь
MM_LOENGLISH 0.01 дюйма
MM_LOMETRIC 0.1 мм
MM_TEXT пиксель устройства
MM_TWIPS 1/1440 дюйма

Вы можете выбирать любой. Но MM_LOENGLISH достаточно удобный. Только следует точно знать о расположении координат и нуля. Для каждого режима они разные. Для MM_LOENGLISH вот так.

81_2.gif (1333 b)

Для установки режима у контекста устройства есть функция SetMapMode, с помощью которой переключается режим. Вызывайте её первой, и всё будет в порядке. Режим MM_LOENGLISH гарантирует, что и на экране и на принтере будет выводиться графика одинаково на основе размеров заданных в дюймах.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.