多邊形和剪貼區域
多邊形也是一個GDI物件,同樣遵守其他GDI物件的規則,只是通常都不將其選入DC中。在MFC中多邊形有CRgn表示。多邊形用來表示一個不同與矩形的區域,和矩形具有相似的操作。如:檢測某點是否在內部,並操作等。此外還得到一個包含此多邊形的最小矩形。下面介紹一下多邊形類的成員函式:
CreateRectRgn 由矩形建立一個多邊形
CreateEllipticRgn 由橢圓建立一個多邊形
CreatePolygonRgn 建立一個有多個點圍成的多邊形
PtInRegion 某點是否在內部
CombineRgn 兩個多邊形相併
EqualRgn 兩個多邊形是否相等
在本節中講演多邊形的意義在於重新在視窗中作圖時提高效率。因為引發視窗重繪的原因是某個區域失效,而失效的區域用多邊形來表示。假設視窗大小為500*400當上方的另一個視窗從(0,0,10,10)移動到(20,20,30,30)這時(0,0,10,10)區域就失效了,而你只需要重繪這部分割槽域而不是所有區域,這樣你程式的執行效率就會提高。
通過呼叫API函式int GetClipRgn( HDC hdc, HRGN hrgn)就可以得到失效區域,但是一般用不著那麼精確而只需得到包含該區域的最小矩形就可以了,所以可以利用int CDC::GetClipBox( LPRECT lpRect )完成這一功能。