MFC圖形繪制_顏色改變


計算機圖形學中的裁剪算法,在畫出原線段后修改畫筆為白色對線段進行遮蓋,之后再繪制。

 

修改畫筆算法:

//用白色消除原來的畫線痕跡

CPen cPen;//生明畫筆 畫筆和畫刷都應該有
cPen.CreatePen(PS_SOLID,1,RGB(255,255,255)) ;
CPen* pOldPen = pDC->SelectObject(&cPen);
pDC->SelectObject(&cPen);
/*CBrush brush, *oldBrush;//創建畫刷
brush.CreateSolidBrush(RGB(0, 255, 255));//更改顏色
oldBrush=pDC->SelectObject(&brush);//重新選取
*/
pDC->MoveTo(Round(p0.x),Round(p0.y));
pDC->LineTo(Round(p1.x),Round(p1.y));
pDC->SelectObject(pOldPen);//還回畫刷

一開始查到的資料是用CBrush類的,不知為啥沒用.....CPen就可以

 

另:

在Ondraw()外的函數接口繪制圖形,pDC需要初始化,坐標軸也要重新調整

void Cweek9_2View::OnCut()
{
// TODO: 在此添加命令處理程序代碼

CDC* pDC= GetDC();

CRect rect; //定義客戶區
GetClientRect(&rect); //獲得客戶區的大小
pDC->SetMapMode(MM_ANISOTROPIC); //自定義坐標系
pDC->SetWindowExt(rect.Width(),rect.Height()); //設置窗口比例
pDC->SetViewportExt(rect.Width(),-rect.Height()); //設置視區比例,且x軸水平向右,y軸垂直向上
pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);//設置客戶區中心為坐標系原點
rect.OffsetRect(-rect.Width()/2,-rect.Height()/2); //矩形與客戶區重合

...

ReleaseDC(pDC); 

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM