Поделиться через


CRgn::CombineRgn

Создает новую область GDI путем объединения существующих области 2.

int CombineRgn(
   CRgn* pRgn1,
   CRgn* pRgn2,
   int nCombineMode 
);

Параметры

  • pRgn1
    Задает текущую область.

  • pRgn2
    Задает текущую область.

  • nCombineMode
    Определяет операцию, выполняемую при сочетании 2 области источника.Он может быть одним из следующих значений:

    • RGN_AND Использует перекрывающиеся области обеих областей (пересечение).

    • RGN_COPY Создает копию указанной области 1 ( pRgn1).

    • RGN_DIFF Создает область, состоящий из областей области 1 (указанной pRgn1), которые не входят в области 2 (указанной pRgn2).

    • RGN_OR Сочетающий обе области полностью (объединение).

    • Объединяет RGN_XOR обе области, но удалить перекрывающиеся области.

Возвращаемое значение

Определяет тип результирующего области.Он может иметь одно из следующих значений:

  • Новая область COMPLEXREGION есть перекрывающихся границы.

  • ERROR Без новой созданной области.

  • NULLREGION Новую область пуста.

  • Новая область SIMPLEREGION нет пересекающихся границы.

Заметки

Области комбинируются в соответствии с nCombineMode.

2 Указанные области комбинируются и результирующий маркер области сохраняется в объекте CRgn.Таким образом, любая область хранится в объекте CRgn заменяет комбинированной областью.

Размер области ограничен 32.767 32.767 логическими модулями или 64K памяти, какая из этих величин меньше.

Используйте CopyRgn просто для копирования одной области в другую область.

Пример

CRgn   rgnA, rgnB, rgnC;

VERIFY(rgnA.CreateRectRgn( 50, 50, 150, 150 ));
VERIFY(rgnB.CreateRectRgn( 100, 100, 200, 200 ));
VERIFY(rgnC.CreateRectRgn( 0, 0, 50, 50 ));

int nCombineResult = rgnC.CombineRgn( &rgnA, &rgnB, RGN_OR );
ASSERT( nCombineResult != ERROR && nCombineResult != NULLREGION );

CBrush br1, br2, br3;
VERIFY(br1.CreateSolidBrush( RGB(255, 0, 0) ));  // rgnA Red
VERIFY(pDC->FrameRgn( &rgnA, &br1, 2, 2 ));
VERIFY(br2.CreateSolidBrush( RGB(0, 255, 0) ));  // rgnB Green
VERIFY(pDC->FrameRgn( &rgnB, &br2, 2, 2 ));
VERIFY(br3.CreateSolidBrush( RGB(0, 0, 255) ));  // rgnC Blue
VERIFY(pDC->FrameRgn( &rgnC, &br3, 2, 2 ));

Требования

Header: afxwin.h

См. также

Ссылки

Класс CRgn

Диаграмма иерархии

CRgn::CopyRgn

CombineRgn