1. 程式人生 > >MFC圖形繪制_顏色改變

MFC圖形繪制_顏色改變

圖形繪制 計算 iso draw nbsp dbr style tor ase

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

修改畫筆算法:

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

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);

}

MFC圖形繪制_顏色改變