BOOL SetWindowExtEx(
HDC hdc, //дескриптор контекста отображения
int xWinExt, // новое значение для xWinExt
int yWinExt, // новое значение для yWinExt
LPSIZE IpSize // предыдущий размер области просмотра
);
BOOL SetViewpor(ExtEx(
HDC hdi; // дескриптор контекста отображения
int xViewExt, // новое значение для xViewExt
int yViewExt, // новое значение для yViewExt
LPSIZE IpSize // предыдущий размер области просмотра
);
IpSize является указателем на структуру SIZE, в которую помещаются размеры предыдущей области просмотра. Если IpSizeNULL, ничего не возвращается.
В качестве примера, создадим систему координат с началом отсчета в нижнем левом углу, причем ось х - направлена слева направо, а ось у – снизу вверх. Высота и ширина должны изменяться в диапазоне О...32767 (32767 -максимально возможное число при 16 разрядной системе). Применим одинаковый масштаб по осям с использованием изотропного режима отображения(MM_ISOTROPIC).
SetMapMode (hdc. MM_ISOTROPIC);
SetWindowExtEx (hdc, 32767, 32767,NULL);
SetViewportExtEx (hdc, cxClieni, -cyClienI,NULL);
SetViewportOrg (hdc. 0, cyClienI);
Рисунок 5.3. Изображение квадрата и круга при различных соотношениях высот, к ширине окна в изотропном а), b) и анизотропном с) режимах
На рис. 5.3 показано изображение квадрата и круга при различныхотображения изотропном и анизотропном.
5.7 Рисование геометрических фигур
Не все драйверы устройств вывода могут рисовать перечисленные ниже геометрические объекты. Поэтому, перед рисованием, хорошее приложение Windows должно определить возможность рисования необходимых ему геометрических объектов и, в случае невозможности их отображения конкретным устройством вывода (не обязательно драйвера монитора, который чаще всего сможет нарисовать любые фигуры), выдать соответствующее предупреждение и прекратить работу. Для этих целей служит функция GetDeviceCaps (см. HELP).
5.7.1 Рисование точки
Эта функция имеет следующий прототип;
COLORREF SetPixel(
НDC hdc, // контекст отображения
intnXpos, //х-координата точки
int nYPos, //у - координата точки
COLORREF cllrref // цвет точки
);
Параметры nXpos и nYPos определяют координаты точки в установленном Вами режиме отображения для
контекста hdc.
Для конструирования цвета точки в форматеCOLORREF в файлеwlndows.h имеется макрокомандаRGB.Используя ее, мы можем рисовать точки следующим образом:
SetPixel(hdc, 0, 0,RGB(255, 0, 0)); //точка красного цвета в начале координат
SetPixel(hdc, 0, 0,RGB(0, 0, 255)); //точка синего цвета в начале координат
Se(Pixel(hdc, 0, 0.RGB(255, 255, 255)); //точка белою цвета н начале координат
SetPixel(hdc, 0, 0, RGB(100, 100, 100)); //точка серого цвета в начале координат
Таким образом, вы можете задать любой из 16 миллионов цветов. Но возможно вам это и не удастся. Функция SetPixel возвращает цвет, который был на экране до момента рисования Вами точки. Цвет возвращается в форматеCOLORREF.
Имеется функция, возвращающая цвет точки окна в формате COLORREF;
COLORREF GetPixel (НDC hdc,int пХроs,int n YPos);
Определены три макрокоманды, позволяющие выделить три цветовых компоненты из форматаCOLORREF.
Дата добавления: 2017-01-26; просмотров: 1526;