VC窗口形状的绘制---SetWindowRgn
生活随笔
收集整理的這篇文章主要介紹了
VC窗口形状的绘制---SetWindowRgn
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#define PICWIDTH??? 365
#define PICHEIGHT?? 160
?? ?//CRgn Test;
?? ?//X1,Y1 ---------- Long,矩形左上角X,Y坐標
?? ?//X2,Y2 ---------- Long,矩形右下角X,Y坐標
?? ?//創建一個矩形區域
?? ?HRGN rgnRect1=CreateRectRgn(0,0,100,PICHEIGHT);
?? ?HRGN rgnRect2=CreateRectRgn(110,0,210,PICHEIGHT);
?? ?/*
?? ?創建的一個帶圓角的矩形區域。
?? ?nLeftRect
?? ?[in] 指定了x坐標的左上角區域邏輯單位。
?? ?nTopRect
?? ?[in] 指定了y坐標的左上角區域邏輯單位。
?? ?nRightRect
?? ?[in] 指定了x坐標的右下角區域邏輯單位。
?? ?nBottomRect
?? ?[in] 指定了y坐標的右下角區域邏輯單位。
?? ?nWidthEllipse
?? ?[in] 指定創建圓角的寬度邏輯單位。
?? ?nHeightEllipse
?? ?[in] 指定創建圓角的高度邏輯單位。
?? ?*/
?? ?HRGN rgnRoundRect=CreateRoundRectRgn(0,0,PICWIDTH,PICHEIGHT,10,10);
?? ?//創建一個橢圓區域
?? ?HRGN rgnEllipticRect=CreateEllipticRgn(0,0,PICWIDTH,PICHEIGHT);
?? ?//創建一個由一系列點圍成的區域
#define BIANKUANG? 10
?? ?CPoint pts[8] = {CPoint(BIANKUANG, 0), CPoint(PICWIDTH-BIANKUANG, 0), CPoint(PICWIDTH, BIANKUANG), CPoint(PICWIDTH, 150),
?? ??? ?CPoint(PICWIDTH-BIANKUANG, PICHEIGHT), CPoint(BIANKUANG, PICHEIGHT), CPoint(0, PICHEIGHT-BIANKUANG), CPoint(0,BIANKUANG)};
?? ?HRGN rgnPolygonRect=CreatePolygonRgn(pts,_countof(pts),ALTERNATE);
?? ?/*
?? ?RGN_AND?? 兩個源區域的交集(集合中的交集)
?? ?RGN_COPY? 設置為hSrcRgn1的拷貝
?? ?RGN_DIFF? 設置為hSrcRgn1與hSrcRgn2相減后的區域(集合中的差集)
?? ?RGN_OR??? 被設置為兩個區域的并集(集合中的并集)
?? ?RGN_XOR?? 被設置為兩個區域的異或操作后的區域(集合中的異或操作)
?? ?*/
?? ?HRGN RgnTwo=CreateRectRgn(0,0,0,0);//必須先創建一個空的區域
?? ?//兩個區域轉變成一個區域
?? ?CombineRgn(RgnTwo,rgnRect1,rgnRect2,RGN_OR);
?? ?//區域生效
?? ?SetWindowRgn(rgnPolygonRect,true);
?? ?//不用時一定要用DeleteObject函數刪除該區域
?? ?DeleteObject(rgnRoundRect);
#define PICHEIGHT?? 160
?? ?//CRgn Test;
?? ?//X1,Y1 ---------- Long,矩形左上角X,Y坐標
?? ?//X2,Y2 ---------- Long,矩形右下角X,Y坐標
?? ?//創建一個矩形區域
?? ?HRGN rgnRect1=CreateRectRgn(0,0,100,PICHEIGHT);
?? ?HRGN rgnRect2=CreateRectRgn(110,0,210,PICHEIGHT);
?? ?/*
?? ?創建的一個帶圓角的矩形區域。
?? ?nLeftRect
?? ?[in] 指定了x坐標的左上角區域邏輯單位。
?? ?nTopRect
?? ?[in] 指定了y坐標的左上角區域邏輯單位。
?? ?nRightRect
?? ?[in] 指定了x坐標的右下角區域邏輯單位。
?? ?nBottomRect
?? ?[in] 指定了y坐標的右下角區域邏輯單位。
?? ?nWidthEllipse
?? ?[in] 指定創建圓角的寬度邏輯單位。
?? ?nHeightEllipse
?? ?[in] 指定創建圓角的高度邏輯單位。
?? ?*/
?? ?HRGN rgnRoundRect=CreateRoundRectRgn(0,0,PICWIDTH,PICHEIGHT,10,10);
?? ?//創建一個橢圓區域
?? ?HRGN rgnEllipticRect=CreateEllipticRgn(0,0,PICWIDTH,PICHEIGHT);
?? ?//創建一個由一系列點圍成的區域
#define BIANKUANG? 10
?? ?CPoint pts[8] = {CPoint(BIANKUANG, 0), CPoint(PICWIDTH-BIANKUANG, 0), CPoint(PICWIDTH, BIANKUANG), CPoint(PICWIDTH, 150),
?? ??? ?CPoint(PICWIDTH-BIANKUANG, PICHEIGHT), CPoint(BIANKUANG, PICHEIGHT), CPoint(0, PICHEIGHT-BIANKUANG), CPoint(0,BIANKUANG)};
?? ?HRGN rgnPolygonRect=CreatePolygonRgn(pts,_countof(pts),ALTERNATE);
?? ?/*
?? ?RGN_AND?? 兩個源區域的交集(集合中的交集)
?? ?RGN_COPY? 設置為hSrcRgn1的拷貝
?? ?RGN_DIFF? 設置為hSrcRgn1與hSrcRgn2相減后的區域(集合中的差集)
?? ?RGN_OR??? 被設置為兩個區域的并集(集合中的并集)
?? ?RGN_XOR?? 被設置為兩個區域的異或操作后的區域(集合中的異或操作)
?? ?*/
?? ?HRGN RgnTwo=CreateRectRgn(0,0,0,0);//必須先創建一個空的區域
?? ?//兩個區域轉變成一個區域
?? ?CombineRgn(RgnTwo,rgnRect1,rgnRect2,RGN_OR);
?? ?//區域生效
?? ?SetWindowRgn(rgnPolygonRect,true);
?? ?//不用時一定要用DeleteObject函數刪除該區域
?? ?DeleteObject(rgnRoundRect);
總結
以上是生活随笔為你收集整理的VC窗口形状的绘制---SetWindowRgn的全部內容,希望文章能夠幫你解決所遇到的問題。