Логическая и физическая система координат



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

Логическая система координат – условная система, где единица измерения зависит от режима отображения. Windows поддерживает восемь режимов отображения. По умолчанию начало координат находится в левом верхнем углу области вывода, при этом ось Х направлена слева направо, а ось У – сверху вниз.

Для настройки системы координат в Windows используется два понятия – физическая область вывода (viewport), координаты и размеры которой задаются в физических единицах – пикселях, и логическая область вывода (window), координаты и размеры которой задаются в логических единицах, определяемых режимом рисования.

Основная функция которая позволяет выбрать режим, а значит и систему координат – SetMapMode.

SetMapMode(hdc,MM_LOMETRIC);

Особенность режима LOMETRIC состоит в том, что логическая единица соответствует 1/10 миллиметра или 1/100 сантиметра, а не 1 пикселю, размер которого зависит от видеоконтроллера.

Поскольку в нашем режиме ось OY направлена вверх, т.е. логическое начало координат находится в левом нижнем углу, то необходимо перенести нашу точку(начало координат) в данную физическую точку (левый нижний угол рабочей области) с помощью функции SetViewportOrgEx:

SetViewportOrgEx(hdc,0,645,NULL); 

Т.е. логическая точка (0,0) будет находиться в точке с физическими координатами(0, 645).

 

Режимы преобразования координат

Вы можете устанавливать режим отображения, используя функцию:

SetMapMode (hdc, iMapMode);

Определить текущий режим отображения вы можете путем вызова:

iMapMode = GetMapMode (hdc);

По умолчанию установлен режим MM_TEXT. Â этом режиме отображения логические единицы эквивалентны физическим единицам, что позволяет нам (или заставляет нас) работать непосредственно в терминах пикселей.

Если же вы хотите рисовать образы в реальных единицах измерения, таких как миллиметры или дюймы, то вы можете получить нужную вам информацию из функции GetDeviceCaps и осуществлять свое собственное масштабирование.

Режим Логическая единица Координата X Координата Y
   

Возрастание координат

MM_HIENGLISH 0,001 дюйма Слева направо Снизу вверх
MM_HIMETRIC 0,01 мм Слева направо Снизу вверх
MM_ISOTROPIC Произвольное Определяется Определяется
MM_LOENGLISH 0,01 дюйма Слева направо Снизу вверх
MM_LOMETRIC 0,1 мм Слева направо Снизу вверх
MM_TEXT Пиксель устройства Слева направо Сверху вниз
MM_TWIPS 1/1440 дюйма Слева направо Снизу вверх

 

Объекты GDI. Создание и использование

При рисовании фигур используются специальные объекты GDI , т.е. объекты интерфейса графического устройства системы Windows.

Как и любые другие объекты в Visual C++, они должны быть созданы соответствующим образом. Создание объекта должно включать в себя и связывание с соответствующим объектом системы Windows. Эта операция осуществляется методом, имя которого начинается с префикса Create.

При завершении работы с объектом GDI необходимо обеспечить (вернее, не нарушать) его автоматическое удаление при выходе из соответствующей области видимости.

Перо - объект для рисования линий. При создании пера можно задать его ширину, цвет и тип линии. Для создания пера используются метод CreatePen .

Кисть представляет собой растровое изображение размером 8х8 пикселей для заполнения различных областей. Различают два варианта понятия кисти: логическая и физическая. Объект GDI задает логическую кисть, которая определяет полный набор свойств: цвет, стиль и т.п., - указываемых при ее создании. Возможно, не все эти свойства могут быть реализованы на данном компьютере. Свойства физической кисти реально воспроизводятся физическими устройствами. Они являются наиболее близким реализуемым приближением к свойствам логической кисти.

 

GDI и векторная модель рисования

Большинство традиционных графических программ работает исключительно с векторами. Это значит, что программа, использующая один из таких графических языков, абстрагируется от особенностей оборудования. Устройство отображения оперирует пикселями для создания графических образов, тогда как программа при связи с интерфейсом не использует понятие пикселя. Несмотря на то, что Windows GDI — это высокоуровневая векторная система рисования, она также может применяться и для относительно низкоуровневых манипуляций с пикселями.

 

Быстрая векторная графика

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

Большинство традиционных графических программ работает исключительно с векторами. Это значит, что программа, использующая один из таких графических языков, абстрагируется от особенностей оборудования. Устройство отображения оперирует пикселями для создания графических образов, тогда как программа при связи с интерфейсом не использует понятие пикселя. Несмотря на то, что Windows GDI — это высокоуровневая векторная система рисования, она также может применяться и для относительно низкоуровневых манипуляций с пикселями.

 


Дата добавления: 2019-02-13; просмотров: 457; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!