, , , , , . , HRGN.
:
ExtCreateRegion (const XFORM *lpXform, DWORD nDataSize,
const RGNDATA lpRgnData);
XFORM , NULL ; RGNDATA, :
RGNDATAHEADER rdh ;
char Buffer [1] RECT, .
, RGNDATAHEADER :
DWORD dwSize ;
DWORD iType (RGN _ RECTANGLES);
DWORD nCount ;
DWORD nRgnSize ( );
RECT rcBound .
hRgn = CreateRectRgn (xLeft, yTop, xRight, yBottom);
hRgn = CreateRectRgnIndirect (&rect);
:
hRgn = CreateEllipticRgn (xLeft, yTop, xRight, yBottom);
hRgn = CreateEllipticRgnIndirect (&rect);
CreateRoundRectRgn .
( Polygon):
hRgn = CreatePolygonRgn (&point, iCount, iPolyFillMode);
point POINT, iCount , iPolyFillMode ALTERNATE (WINDING). CreatePolyPolygonRgn.
:
iRgnType = CombineRgn (hDestRgn, hSrcRgn1, hSrcRgn2, iCombine);
(hSrcRgn1 hSrcRgn2) , hDestRgn. , , hDestRgn, .
iCombine :
RGN_AND ;
RGN_OR ;
RGN_XOR ;
RGN_DIFF hSrcRgn1, hSrcRg2;
RGN_COPY hSrcRgn1.
iRgnType, , : NULLREGION ; SIMPLEREGION , ; COMPLEXREGION , ; ERROR .
FillRgn (hdc,hRgn,hBrush); FrameRgn (hdc,hRgn,hBrush,xFrame,yFrame);
InvertRgn (hdc, hRgn); PaintRgn (hdc, hRgn);
FillRect ( ), FrameRect ( ) InvertRect ( ); xFrame yFrame , .
|
|
PaintRgn . , .
GDI:
DeleteObject (hRgn);
GetRgnData . GetRgnBox.
PtInRegion RectInRegion .
.