Растровая операция задается функцией SetR0P2(HDC. int Mode). Второй параметр может принимать различные значения, некоторые из которых приведены в следующем списке: О Константа R2_C0PYPEN указывает, что цвет задается пером и кистью без учета цвета экрана. После запроса контекста этот режим используется по умолчанию.

О Константа R2_BLACK указывает, что цвет будет черным.

О Константа R2MASKPEN указывает, что коды старого и нового цветов побитно объединяются при помощи операции И.

О Константа R2_MERGEPEN указывает, что коды старого и нового цветов побитно объединяются при помощи операции ИЛИ.

О Константа R2_MASKN0TPEN указывает, что цвета пера и кисти инвертируются.

О Константа R2_X0RPEN указывает, что результат формируется при помощи побитовой операции XOR.

Получить информацию о прозрачности фона и режиме рисования можно при помощи функций GetBkMode() и GetR0P2().

Для демонстрации функций изменения режимов вывода изображения (проект GdiMode) следует включить в оконную процедуру проекта minim обработку сообщения WMPAINT, как это показано в листинге 14.1.

Листинг 14.1

case WM_PAINT: {
PAINTSTRUCT ps; RECT rect:
int Xl.x2.x3.x4.yl.y2.y3,y4;
POINT Pointl [] - { {240.10}.{255.75}.{105.5}.{275.30}.{200.75}}; if(hDC - BeginPaint(hWnd.&ps)) {

GetClientRect(hWnd.&rect); //Записываем в rect размер рабочей области. hBrush - (HBRUSH)SeiectObject(hDC.CreateSolidBrush(RGB(0.0.200))); hPen - (HPEN)Select0bject(hDC.CreatePen(PS_DASH.8. RGBC0.200.200))); SetPolyFillMode (hDC. WINDING):

Polygon (hDC. Pointl.5): //Рисуем синий многоугольник. //Рисуем сегмент эллипса с растровой операцией X0R и прозрачной штриховкой SetR0P2 (hDC.R2_X0RPEN); SetBkMode (hDC.TRANSPARENT);

SetBkColor(hDC.RGB(250.250.0)); //Желтый фон (по умолчанию был белый).

Фоновый цвет примитивов

DeleteObjectC

SelectObect(hDC.CreateHatchBrush(HS_DIAGCROSS.RGB(200.О.190)))):

//Создали штрихованную кисть, ввели ее в контекст, а синюю уничтожили

xl - 2*rect.right/5-10;
yl - rect.top+25;

х2 - 3*rect.right/5-10; у2 - rect.bottom/5+25; хЗ - (xl+x2)/2+40;


⇐ Предыдущая| |Следующая ⇒