MFC中如何在不規則的區域內填充顏色

2021-07-09 09:17:55 字數 758 閱讀 5258

在畫圖的過程中,總是會碰到顏色填充的問題,如果要填充一些規則的區域,比如橢圓、方形等,直接用cdc中的fillellipse以及fillrect很簡單就可以完成,那如果是乙個不規則的區域應該如何呢,這裡就簡單介紹乙個我用到過的方法。

首先就需要建立乙個區域,例如:

pdc->beginpath();

pdc->moveto(250, 250);

pdc->anglearc(250, 250, 50, 0, 60);

pdc->endpath();

crgn rgn;

rgn.createfrompath(pdc);

pdc->invertrgn(&rgn);

此時 beginpath();和endpath();

之間的部分就是所建立的不規則區域。

然後填充的話,可以用fillrgn這個函式來完成。這樣就完成了……

另外,建立這個區域的時候,需要

注意如果該區域是由一系列的直線構成的,則最好寫成如下情況:

pdc->moveto(……);

pdc->lineto(……); 

pdc->lineto(……); 

pdc->lineto(……);

如果寫成:

pdc->moveto(……);

pdc->lineto(……); 

pdc->moveto(……);

pdc->lineto(……);

可能會出問題,使得該區域填充的時候無法正確填充。

**:

MFC 給不規則的多邊形閉合區域填充顏色

問題描述 現有多個由線段line匯成的閉合區域,將每個區域使用不同的顏色填充。實現的完整 繪製圖形 find the client area crect rect getclientrect rect draw with a thick blue pen cpen penblue ps solid,...

FAQ 如何在 中獲得 的指標 MFC

問 請問如何在乙個全域性函式中,獲得它檢視類,文件類得指標啊?問 如何在乙個對話方塊中,獲得它檢視類,文件類得指標啊?舉例來說,如果檢視的成員函式需要建立乙個對話方塊,而對話方塊需要訪問文件,那麼可以在對話方塊類中宣告乙個文件指標,檢視的成員函式建立對話方塊之後把對話方塊中的文件指標變數的值設定為和...

在VB6 0中實現大面積不規則區域的填充

一 引言 區域填充是指先將區域內的乙個畫素 一般稱為種子點賦予給定的顏色和輝亮,然後將該顏色擴充套件到整個區域內的過程。二 已有的填充演算法及缺點 1 掃瞄線法 掃瞄線法可以實現已知多邊形域邊界的填充,多邊形域可以是凹的 凸的 還可以是帶孔的。該填充方法是按掃瞄線的順序,計算掃瞄線與待填充區域的相交...