Логическая и физическая система координат
Существует 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!