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