Учебное пособие: Основы графического вывода

Ошибка, которая присутствует в этом фрагмента, сразу и не видна. Более того, во многих случаях вы получите вполне приемлемый результат и даже не заподозрите об ошибке — до тех пор, пока у вашей логической системы координат не окажется смещенным начало отсчета по оси x от левой границы контекста. В этом случае вы получите ширину 10 пиксель, преобразованную в логические единицы плюс смещение начала отсчета:

Рисунок 3. Из–за смещения начала отсчета возможно возникновение ошибок.

Что бы избежать подобной ошибки лучше брать не одну точку, а вектор нужной длины:

POINT vector[ 2 ];

vector[0].x = 0; vector[0].y = 0;

vector[1].x = 10; vector[1].y = 0;

DPtoLP (hdc, &vector, 2);

vector[1].x -= vector[0].x;

// Далеесчитаем, чтовкомпоненте vector[1].x записананужнаянамвеличина

Выбор системы координат

Для описания используемой системы координат предназначено пять атрибутов контекста устройства. Четыре атрибута описывают смещение начала отсчета и масштабные коэффициенты. Пятый атрибут — собственно выбранная в настоящий момент система координат.

Название атрибута Значение по умолчанию Обозначение в формулах
Mapping mode Система координат MM_TEXT
Window origin Начало отсчета в логических координатах 0,0 Xwin.org, Ywin.org
Viewport origin Начало отсчета в координатах устройства 0,0 Xview.org, Yview.org
Window extents Масштабные коэффициенты системы координат 1,1 Xwin.ext, Ywin.ext
Viewport extents Масштабные коэффициенты системы координат 1,1 Xview.ext, Yview.ext

Стандартная система координат GDI, выбираемая в контекст устройства при его создании совпадает с системой координат самого устройства (или окна). Такая система координат получила название текстовой (MM_TEXT). Вы можете отказаться от этой системы координат и установить некоторую собственную систему, у которой ориентация осей или масштабные коэффициенты отличаются от стандартной. Очевидно, что чаще всего придется устанавливать какие–либо системы координат, базирующиеся на метрической или английской системах мер. Раз так, то Microsoft предоставляет несколько дополнительных систем координат, так что во многих случаях вы можете просто выбрать подходящую вам метрическую (MM_LOMETRIC, MM_HIMETRIC), английскую систему (MM_LOENGLISH, MM_HIENGLISH) или полиграфическую (MM_TWIPS), не заботясь о точном вычислении масштабных коэффициентов. Более того, используя какую–либо из вышеназванных систем вы вообще не можете изменять масштабные коэффициенты, хотя можете перемещать точку начала отсчета.

В тех же случаях, когда вы хотите самостоятельно настраивать масштабные коэффициенты, вы можете воспользоваться системой координат MM_ANISOTROPIC, в которой вы свободно можете менять все коэффициенты, либо MM_ISOTROPIC, в которой GDI позволит вам произвольно назначать масштабные коэффициенты, но при этом сам их скорректирует, так что масштаб по обеим осям окажется равным. То есть если вы нарисуете прямоугольник с равным логическим размером сторон, то на рисунке он будет выглядеть квадратом.

Название Единица Ориентация осей
MM_TEXT 1 пиксель
MM_LOMETRIC 0.1 мм
К-во Просмотров: 552
Бесплатно скачать Учебное пособие: Основы графического вывода