Выбор режима рисования


При рисовании на бумаге цвет линии не зависит от цвета бумаги, он определяется только цветом пера. По-другому дела обстоят при рисовании на мониторе, здесь зависимость цвета линии от цвета пера и цвета окна может быть очень сложной. Эта зависимость определяется выбором режима рисования, который устанавливается функцией 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;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

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

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.