今週のソフトウェア開発の宿題として、私は最初にMFC(一般的に食べ物がないこととして知られています)も学びました。
1. Onpaint()関数:
1 void CMyDrawer_CPlusDlg :: OnPaint() 2 { 3 if (IsIconic()) 4 { 5 CPaintDC dc(this); // 描画用のデバイスコンテキスト 6 7 SendMessage(WM_ICONERASEBKGND、reinterpret_cast <WPARAM>(dc.GetSafeHdc() )、0 ); 8 9 // ワークスペースの四角形の 中央にアイコンを配置10 int cxIcon = GetSystemMetrics(SM_CXICON); 11 int cyIcon = GetSystemMetrics(SM_CYICON); 12 CRect rect; 13 GetClientRect(&rect); 14 int x =(rect.Width()-cxIcon + 1)/ 2 ; 15 int y =(rect.Height()-cyIcon + 1)/ 2 ; 16 17 // Draw icon 18 dc.DrawIcon(x、y 、m_hIcon); 19 20 } 21は、 他の 22れる { 23は、 // 画像がリフレッシュ 24 IF (描画) 25 { 26である のBitBlt(ownerHDC、0、0、ownerRect.right、ownerRect.bottom、memHDC、0、0を、SRCCOPY); //は、レンダリングされた画像を表示 27 DrawLine(ownerHDC、xFirst、yFirst、xSecond、ySecond); 28 } 29 他の 30 { 31である のBitBlt(ownerHDC、0、0、ownerRect.right、ownerRect.bottom、memHDC、0、0、SRCCOPY); // 描画された画像を表示 32 } 33 CDialogEx :: OnPaint(); 34 // ------------------------- ------------------------------------------私が描くもの 35 CClientDC dc(this); //現在の環境の描画選択 36を HDC HDC = この - > GetDC() - > m_hDC; 37 / * DrawBall(HDC、400、100、450、150); * / 38である CPENのmypen(PS_SOLID、2、RGB(255、0、0 )); 39 CBrushのmybrush(RGB(0、0、255 )); 40 CFont MyFont; 41である myfont.CreatePointFont(200であり、L " のTimes New Roman " ); 42である CPEN oldpen = *(* CPEN)SelectObject(hdc、mypen); 43 CBrush * oldbrush =(CBrush * )SelectObject(hdc、mybrush); 44 CFont * oldfont =(CFont * )SelectObject(hdc、myfont); 45 46 MoveToEx(HDC、50、250 、NULL); 47 LINETO(HDC、50、450 )。 48 MoveToEx(HDC、125、250 、NULL); 49 LINETO(HDC、125、450 )。 50 ::のTextOut(HDC、150、405、L "スタック" 1。 )、 51は ::のTextOut(HDC、150、25、L " プレオーダー非再帰"、10 ); 52 /// / ============== ====================================== 53 54 SelectObject(hdc、oldpen); 55 DeleteObject( mypen); 56 SelectObject(hdc、oldbrush); 57 DeleteObject(mybrush); 58 SelectObject(hdc、oldfont); 59 DeleteObject(myfont); 60 61 62 } 63 }
これはMFCのOnpaint()関数のデモです。私はそれを学習したばかりなので、MFCを初めて使う人に、私のような簡単なガイダンスを提供します。
リソースビュークラスウィザードでOnpaint()関数を追加すると、MFCはフレームワークを含む関数を自動的に生成します。私たちがしなければならないすべてはこのフレームワークです
CDialogEx :: OnPaint();
この文の後に、必要なものを入力してください。インターフェイスを描画する前に、ウィンドウのHDCを処理し、MFCにカプセル化されているさまざまな関数と描画メソッドを使用して、フォームのHDCに描画される画像を描画することに注意してください。これは単に絵の操作の対象として理解でき、それぞれの絵の前に、対象を取得する必要があります。
DC CClientDCは(この); // 現在の描画環境を選択し HDC HDC =をこの - > GetDC() - > m_hDC。
これらの2行のコードの意味は、現在使用されているフォームのhdcハンドルを取得することです。
その後、描画を開始できます!
2.描画に一般的に使用されるいくつかの関数:
2.1:直線を描く
MoveToEx(hdc、x1、y1、NULL);
LineTo(hdc、x2、y2);
最初の関数は線の始点座標(x1、y1)を見つけるために使用され、2番目の関数は線の終点座標(x2、y2)を見つけるために使用されます。
2.2:円を描く
楕円(hdc、x0、y0、x1、y1)。
この関数は、円だけでなく楕円も描画できます。定義されている2つの座標値は、(楕円)円に外接する長方形の左上隅の頂点の座標と右下隅の頂点の座標です。
残りの後に変更します。