多邊形也是一個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 )完成這一功能。