第一種方法:使用OnDraw
成員函數
void
CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add
draw code for native data here
pDC->MoveTo(20,30);
pDC->LineTo(200,300);
}
第二種方法:使用CDC *pDC
的菜單調用方式
⑴在MFC架構中的【FileView】面板中,雙擊【TestView.cpp】,在該檔案最後新增成員函數DrawmyLine()的定義:
void
CTestView::DrawmyLine( )
{
CDC *pDC=GetDC();
pDC->MoveTo(20,30);
pDC->LineTo(200,300);
ReleaseDC(pDC);
}
⑵在【FileView】面板中,雙擊【TestView.h】,在該檔案中的“public:”下面加入成員函式宣告:void DrawmyLine();
⑶在菜單中添加菜單函數OnMENU DrawmyLine( )調用DrawmyLine()成員函數。
void
CTestView::OnMENU
DrawmyLine( )
{
// TODO: Add your
command handler code here
DrawmyLine( );
}
本方法需要在標頭檔TestView.h中聲明成員函數DrawmyLine(),在來源程式TestView.cpp中定義成員函數DrawmyLine()。在DrawmyLine()函數中使用了CDC類指標對象,需要調用和釋放裝置上下文
。
第三種方法:使用CClientDC dc(this)
的菜單調用方式
成員函數DrawmyLine()的聲明和菜單的調用同第二種方法的⑵和⑶,在TestView.cpp檔案中修改DrawmyLine()成員函數的定義:
void
CTestView::
DrawmyLine( )
{
CClientDC dc(this
);
dc.MoveTo(20,30);
dc.LineTo(200,300);
}
本方法也需要在標頭檔TestView.h中聲明成員函數DrawmyLine(),在來源程式TestView.cpp中定義成員函數DrawmyLine()。不同點只是使用顯示器客戶區裝置上下文類定義了客戶區對象dc,並使用客戶區的this指標對dc對象進行初始化,使dc對象指向顯示器的客戶區,這種方法不需要調用和釋放裝置上下文。
以上節選自《電腦圖形學基礎教程(Visual C++版)》