Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long,_ ByVal hSrcRgn1 As Long,_ ByVal hSrcRgn2 As Long,_ ByVal nCombineMode As Long) As Long
CombineRgn комбинирует два региона в другой регион различными способами.
Функция возвращает одну из следующих констант, определяющих результат комбинирования
' смотри также пример region.zip ' На окне Form1 создадим ' два пересекающих региона, закрасив результат комбинирования другим цветом Dim hRgn1 As Long, hRgn2 As Long ' эллиптический и прямоугольных исходные регионы Dim hXorRgn As Long ' получаемый регион Dim hLightBrush As Long ' дескриптор серой кисти Dim lRet As Long ' возвращаемое значение ' Создаем два региона и третий для получения дескриптора hRgn1 = CreateEllipticRgn(100, 50, 200, 100) hRgn2 = CreateRectRgn(150, 75, 300, 200) hXorRgn = CreateRectRgn(0, 0, 0, 0) Form1.BackColor = vbGreen ' комбинируем регионы xor-способом lRet = CombineRgn(hXorRgn, hRgn1, hRgn2, RGN_XOR) ' Установим кисть серого цвета и заполним полученный регион hLightBrush = GetStockObject(LTGRAY_BRUSH) lRet = FillRgn(Form1.hDC, hXorRgn, hLightBrush) ' Удаляем регионы для освобождения ресурсов lRet = DeleteObject(hRgn1) lRet = DeleteObject(hRgn2) lRet = DeleteObject(hXorRgn)