资源描述:
《图形学课件 第二章Visual C++6.0 绘图基础.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二章VisualC++绘图基础开发工具的选择MFC上机操作步骤MFC基本绘图函数本章学习目标设备上下文的调用和释放MFC绘制图形的几种方法2.1面向对象程序设计基础(自学)2.2MFC上机操作步骤2.3MFC基本绘图函数2.4本章小结本章内容2.1开发工具的选择TurboC:控制台程序,不支持交互操作。只能显示16色,不能开发光照和带阴影的程序。TurboC绘制的Menger海绵VisualC++:可以显示真彩色,有1678万色。支持交互式绘图。VisualC++绘制的Menger海绵微软基类库MFC(mi
2、crosoftfoundationclasslibrary,MFC)是以C++形式封装的WindowsAPI(ApplicationProgramInterface),包含了200多个已经定义好的常用基类。在程序设计过程中,一般是通过MFC调用基类的成员函数来完成设计任务的。生成一个空项目的步骤见教材40页。添加菜单项并生成函数的步骤见教材82页。2.2MFC上机操作步骤VC环境与类视图资源视图文件视图【ClassView】标签页:☆CTestApp是应用的主函数类,代表了应用程序的主线程。☆MFC中的数据是
3、存储在CTestDoc类中,而结果则是显示在CTestView类中,即显示在客户区中。MFC中的文档/视图结构用来将程序的数据本身和数据显示相互隔离,文件读写的操作在文档类的Serialize()函数中进行,图形显示的操作在视图类的OnDraw()函数中进行。☆CMainFrame类由MainFrame.h和MainFrame.cpp文件组成,CTestApp类由Test.h和Test.cpp文件组成,框架类,CTestDoc类由TestDoc.h和TestDoc.cpp文件组成,CTestView类由Tes
4、tView.h和TestView.cpp文件组成。voidCTestView::OnDraw(CDC*pDC){CTestDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahere}pDC定义为CDC类的指针。pDoc通过GetDocument()函数得到了指向文档类CTestDoc的指针。ASSERT_VALID(pDoc)函数使pDoc指针有效。使用pDC指针,可以对CDC类的成员函数进行操作。OnDraw()
5、函数是由系统框架直接调用的,每当窗口重绘时就会自动执行。OnDraw()函数:点击工具条上的“!”按钮,就可以直接编译、运行程序尽管未编写一句代码,但Test程序已经形成一个可执行程序框架!按钮2.3MFC基本绘图方法在Windows平台上,应用程序的图形设备接口(GraphicsDeviceInterface,GDI)被抽象化为设备上下文CDC类(DeviceContext,DC)。在微软基类库MFC中,CDC类是定义设备上下文对象的基类,封装了绘图所需的所有函数。当输出文字或图形时,就需要调用CDC类的成
6、员函数,这些成员函数具备绘制和打印图形的功能。例2-19使用同心椭圆和同心圆绘制著名标志。voidCTestView::OnDraw(CDC*pDC){CTestDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahere……CPointdl,tr;//绘制外部黑色椭圆dl=CPoint(-200,-150),tr=CPoint(200,150);CBrushNewBrush,*pOldBrush;NewBrush.
7、CreateSolidBrush(RGB(0,0,0));pOldBrush=pDC->SelectObject(&NewBrush);pDC->Ellipse(CRect(dl,tr));pDC->SelectObject(pOldBrush);NewBrush.DeleteObject();MFC绘制图形的几种方法(2.3.7)voidCTestView::OnDraw(CDC*pDC){CTestDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);//TODO:adddr
8、awcodefornativedatahere//绘制外部白色圆dl=CPoint(-147,-147),tr=CPoint(147,147);pDC->Ellipse(CRect(dl,tr));//绘制内部黑色椭圆dl=CPoint(-140,-90),tr=CPoint(140,90);NewBrush.CreateSolidBrush(RGB(0,0,0));pOldBrush=pDC->S