2022-09-14
MFC 繪制太極圖
效果圖:

步驟:
先創建一個MFC專案,打開VS,點擊“新建”,后點擊“專案”,找到“MFC應用”,修改專案名稱,修改專案存盤的位置,
點擊“下一步”,“應用程式型別”選擇“單個檔案”,右邊的“專案樣式”選擇“MFC standard”,點擊“完成”,
點擊“解決方案資源管理器”中的“源檔案”,找到有一個是“xxx(專案名稱)View.cpp”的檔案,點擊,
在該源檔案中找到“OnDraw”函式,將該函式右邊括號里面引數的注釋去掉,在“return”陳述句下面撰寫代碼,
OnDraw函式代碼:
1 void CdiagramView::OnDraw(CDC* pDC) 2 { 3 CdiagramDoc* pDoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 if (!pDoc) 6 return; 7 8 // TODO: 在此處為本機資料添加繪制代碼 9 CBrush blackBrush, whiteBrush; 10 CPen blackPen, whitePen; 11 blackPen.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0,0,0)); 12 whitePen.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255,255,255)); 13 14 blackBrush.CreateSolidBrush(RGB(0, 0, 0)); 15 whiteBrush.CreateSolidBrush(RGB(255,255,255)); 16 17 CBrush *oldBrush = pDC->SelectObject(&blackBrush); 18 CPen *oldPen = pDC->SelectObject(&blackPen); 19 CRect rect(100, 100, 400, 400); 20 21 pDC->Pie(&rect, CPoint(100,250),CPoint(400,250)); 22 23 24 pDC->SelectObject(&whiteBrush); 25 pDC->SelectObject(&blackPen); 26 27 pDC->Pie(&rect, CPoint(400, 250), CPoint(100, 250)); 28 pDC->SelectObject(&blackBrush); 29 pDC->SelectObject(&blackPen); 30 pDC->Ellipse(100, 175, 250, 325); 31 32 pDC->SelectObject(&whiteBrush); 33 pDC->SelectObject(&whitePen); 34 35 pDC->Ellipse(250, 175, 400, 325); 36 pDC->Ellipse(165,240,185,260); 37 38 pDC->SelectObject(&blackBrush); 39 pDC->SelectObject(&blackPen); 40 pDC->Ellipse(315, 240, 335, 260); 41 42 pDC->SelectObject(oldPen); 43 pDC->SelectObject(oldBrush); 44 45 }
說明:
第9行和第10行定義了一個黑白畫刷和畫筆,第11行和第12行為定義的黑白畫筆賦值,里面傳的引數表示對創建的畫筆的要求,“PS_SOLID”表示實線,“PS_COSMETIC”表示畫筆的一種型別——“裝飾畫筆”,“1”表示畫筆的寬度,最后一個引數表示畫筆的顏色,
第14和15行表名為創建的畫刷賦顏色,白色RGB(255,255,255),黑色RGB(0,0,0),第17行和第18行作用是將上面創建的黑色的畫筆和畫刷通過“SelectObject”選入設備環境中,即使用該畫刷、畫筆在顯示幕上顯示,使用&應該是找到畫刷、畫筆創建的記憶體地址,
第19行矩形的四個引數分別為左上角x軸坐標、y軸坐標和右下角x、y坐標,
第21行中Pie函式的引數(&rect, CPoint(100,250),CPoint(400,250))表示在rect矩形中找到后面兩個點,連接通過兩個點的弧線,由第24,25行代碼可知,使用黑筆進行繪制線框(只有弧線),使用白色畫刷粉刷兩個點直接的弧線與兩個點直接連接的這個部分,
第27行代碼表示,選中大圓下面的部分,第28和29行表示使用黑色畫筆、黑色畫刷對下半部分進行操作,
第30行,Ellipse的四個引數代表構成該橢圓的外切矩形的左上角的x坐標、y坐標,右下角的x、y坐標,該行代碼表示用第28行和29行中提供的黑色畫刷和黑色畫筆進行填充左邊的中型圓(見下面的分析圖),
第32行和33行將白色畫刷和白色畫筆選入dc(設備環境),
第35行表示使用白色畫刷和白色畫筆繪制右邊中型圓,
第36行表示使用白色畫刷和白色畫筆繪制左邊小型圓,
第38行和39行將黑色畫刷和黑色畫筆選入dc(設備環境),
第40行使用剛剛選入dc的畫刷和畫筆繪制右邊的小圓,
第42行和43行代碼 表示在使用完新的畫筆和畫刷后,將原來設備中的畫刷和畫筆恢復原狀,
分析圖:

總結:
創建一個太極圖,首先用黑色畫筆創建一個大圓,在大圓的x中軸線創建兩個相同的中型圓,使用Pie畫出輪廓,上述圖中,將太極圖的偏下面一部分刷為黑色,上部分刷為白色,再在大圓的中軸線上創建兩個小圓,一個刷為黑色,一個刷為白色,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/508097.html
標籤:其他
