Declare Function GetRgnBox Lib "gdi32" (ByVal hRgn As Long, lpRect As RECT) As Long
GetRgnBox определяет прямоугольник, ограничивающий данный регион. Прямоугольник ограничения - самый маленький возможный прямоугольник, который полностью окружает регион. Прямоугольник ограничения помещен в структуру lpRect
Функция возвращает 0 в случае ошибки или точно один из следующих флажков, определяющих форму региона:
' Заполним треугольную область на Form1 темным серым цветом и заполним ограничивающий ' прямоугольник (позади него) светло-серым Dim triangle(0 To 2) As POINTAPI ' вершина треугольной области Dim hRgn As Long ' дескриптор треугольной области Dim hLightBrush As Long, hDarkBrush As Long ' дескрипторы к двум кистям Dim bounding As RECT ' ограничительный прямоугольник региона Dim retval As Long ' возвращаемое значение ' Устанавим BackColor формы в красный цвет ' Создаем треугольную область Form1.BackColor=vbRed triangle(0).x = 150: triangle(0).y = 100 ' точка #1: (150,100) triangle(1).x = 200: triangle(1).y = 150 ' точка #2: (200,150) triangle(2).x = 175: triangle(2).y = 200 ' точка #3: (175,200) hRgn = CreatePolygonRgn(triangle(0), 3, ALTERNATE) ' Создаем регион ' Получим дескрипторы к светлому и темному серым твердым кистям hLightBrush = GetStockObject(LTGRAY_BRUSH) hDarkBrush = GetStockObject(DKGRAY_BRUSH) ' Вычисляем ограничительный прямоугольник треугольной области retval = GetRgnBox(hRgn, bounding) ' теперь вычерчиваем ограничительный прямоугольник, ' заполняя ограничительный прямоугольник светло-серым,а регион темно-серым цветом retval = FillRect(Form1.hDC, bounding, hLightBrush) retval = FillRgn(Form1.hDC, hRgn, hDarkBrush) ' Удаляем регион для освобождения ресурсов. retval = DeleteObject(hRgn)