Выбор режима рисования
При рисовании на бумаге цвет линии не зависит от цвета бумаги, он определяется только цветом пера. По-другому дела обстоят при рисовании на мониторе, здесь зависимость цвета линии от цвета пера и цвета окна может быть очень сложной. Эта зависимость определяется выбором режима рисования, который устанавливается функцией lntSetROP2:
Int SetROP2 (
HDC hdc, // контекст отображения
int fnDrawMode II режим рисования
);'
В нижеследующей таблице приведены возможные значения параметра fnDrawMode.
Режим рисования | Формула | 1 ibct пиксела |
R2_COPYPEN | P | Соответствует (равен) цвету пера, |
R2_BLACK | Черный | |
R2_WHITE | Белый | |
R2_NOP | D | Перо ничего не рисует |
R2_NOT | ~D | Получается инвертированием цвета подложки |
R2_NOTCOPYPEN | ~P | Получается инвертирование цвета пера |
R2_MASKPEN | P&D | Комбинация компонентов цветов имеющихся в цвете пера и подложки |
R2_NOTMASKPEN | "(P&D) | Инверсия предыдущего значения |
R2_MERGEPEN | P|D | Комбинация компонентов цветов имеющихся в цвете пера и подложки |
R2_NOTMERGEPEN | -(P|D) | Инверсия предыдущего значения |
R2_XORPEN | PAD | Операция ИСКЛЮЧАЮЩЕЮ ИЛИ между компонентами цвета пера и подложки |
R2_NOTXORPEN | ~(P"D) | Инверсия комбинации инверсии цвета подложки и цвета пера |
R2_MA.SKNOTPEN | P&D | Комбинация цвета подложки и инверсии цвета пера |
R2_IVIASKPENNOT | P& D | Комбинация цвета пера и инверсии цвета подложки |
R2_MERGENOTPEN | P|D | Комбинация цвета подложки и инверсии цвета пера |
R2_MERGEPENNOT | P|~D | Комбинация цвета пера и инверсии цвета подложки |
Если перо и подложка черно-белые, то результат легко предсказать.
Очень интересен режим R2_NOT при использовании, которого на черном фоне будет нарисована белая линия, а на белом фоне черная линия.
Рисование замкнутых фигур
Функции GDI могут рисовать различные замкнутые фигуры: прямоугольники, эллипсы, многоугольники и так далее. Для их рисования помимо пера, с помощью которого рисуется контур, необходим выбор в контекст отображения кисти, которая закрашивает внутренность этих фигур. Возможно использование и рассмотренных ранее режимов отображения, режимов фона, кодов растровых операций.
Рисование прямоугольника
Это наиболее простая функция. Ее прототип:
BOOL Rectangle (
HDC hdc, // дескриптор контекста отображения
int nxTL, // координата х верхнего левого угла
int nyTL, // координата у верхнего левого угла
int nxBR, II координата х нижнего правого угла
intnyBR II координата у нижнего правого угла
);
Внутренность прямоугольника может быть закрашена или заштрихована, кроме того, его можно закрасить с помощью любого битовою изображения размером 8х8 пикселов.
С помощью функцииRoundRect можно рисовать прямоугольники со скругленными углами. В зависимости от кисти, выбранной в контекст, внутренность прямоугольника может быть закрашена. Для закраски используют функцию:
Int FiIIRect (
HDC hdc, II идентификатор контекста отображения
CONST RECT *lрrс, II указатель на структуру RECT
HBRUSH hbrush // идентификатор кисти для закрашивания
};
Для закрашивания границы используют функцию:
Int FrameRect (
HDC hdc, II дескриптор контекста отображения
CONST RECT *lprc, II указатель на структуру
RECT HBRUSH hbrush II идентификатор кисти для закрашивания
);
Рамка всегда рисуется толщиной в один пиксел.
Рисование эллипса
Дата добавления: 2017-01-26; просмотров: 1473;