CombineRgn是将两个区域组合为一个新区域。
基本介绍
- 中文名CombineRgn
- 说明将两个区域组合为一个新区域
- hDestRgn被设定为hSrcRgn1的拷贝
- Long下列常数之一
声明
Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
将两个区域组合为一个新区域
参数表
hDestRgn ------- Long,包含组合结果的区域句柄
hSrcRgn1 ------- Long,源区域1
hSrcRgn2 ------- Long,源区域2
nCombineMode --- Long,组合两区域的方法。可设为下述常数
RGN_AND
hDestRgn被设定为两个源区域的交集(集合中的交集)
RGN_COPY
hDestRgn被设定为hSrcRgn1的拷贝
RGN_DIFF
hDestRgn被设定为hSrcRgn1与hSrcRgn2相减后的区域(集合中的差集)
RGN_OR hDestRgn被设定为两个区域的并集(集合中的并集)
RGN_XOR
hDestRgn被设定为两个区域的异或操作后的区域(集合中的异或操作)
[返回值]
Long,下列常数之一
COMPLEXREGION区域有互相交叠的边界
SIMPLEREGION区域边界没有互相交叠
NULLREGION区域为空
ERRORAPI不能创建组合区域
VC例子:
CRgn r1,r2,r3,rgn;
r1.CreateRectRgn(43,30,100,54);
r2.CreateRoundRectRgn(103,34,145,89,22,11);
r3.CreateEllipticRgn(115,79,195,112);
rgn.CreateRectRgn(0,0,10,10);
r1.CreateRectRgn(43,30,100,54);
r2.CreateRoundRectRgn(103,34,145,89,22,11);
r3.CreateEllipticRgn(115,79,195,112);
rgn.CreateRectRgn(0,0,10,10);
//合併
rgn.CombineRgn(&r1,&r2,RGN_OR);
rgn.CombineRgn(&rgn,&r3,RGN_OR);
CDC pdc=GetDC();
CBrush bsh(0xFF00);
rgn.CombineRgn(&r1,&r2,RGN_OR);
rgn.CombineRgn(&rgn,&r3,RGN_OR);
CDC pdc=GetDC();
CBrush bsh(0xFF00);
pdc->FillRgn(&rgn,&bsh);
rgn.DeleteObject();
r1.DeleteObject();
r2.DeleteObject();
r3.DeleteObject();
ReleaseDC(pdc);
r1.DeleteObject();
r2.DeleteObject();
r3.DeleteObject();
ReleaseDC(pdc);