使用VisualC快速构建图形学程序.ppt
《使用VisualC快速构建图形学程序.ppt》由会员分享,可在线阅读,更多相关《使用VisualC快速构建图形学程序.ppt(32页珍藏版)》请在三一办公上搜索。
1、使用Visual C+6.0快速构建图形学程序,福州大学2004.11,使用VC构建图形学程序,VC的绘图原理和基本方法程序框架的构建程序调试程序发布编写程序需注意的问题,VC的绘图原理和基本方法,设备上下文WM_PAINT消息常用的绘图函数,设备上下文,设备上下文(DEVICE CONTEXT,简称DC),是一个Windows的数据结构,其中包含了输出设备(如显示器、打印机等)的绘图属性。可简单地理解为设备环境,我们必须在这样的环境中进行图形的绘制。在MFC(Microsoft foundation class)中实现对设备上下文封装的类称为CDC,在该类中包含了绘图所需的一切函数,包括颜色
2、、画笔等属性的设置和实际的图形输出函数等。只要创建CDC的对象即可实现在窗口中绘图。在CWnd的派生类中,可以通过GetDC()来创建一个CDC对象,该对象包含了与当前窗口客户区(client area)相关的设备上下文。CDC*GetDC();,设备上下文,除了标准的CDC类外,MFC中还提供了CPaintDC这样的CDC派生类来实现客户区的绘图。CPaintDC和CDC的不同点在于:1)和CDC不同,CPaintDC的对象不是通过GetDC()这样的方法创建,而是在窗口类的WM_PAINT消息的响应函数OnPaint()中通过其构造函数创建。2)CPaintDC有一个更新区域(update
3、 region),仅当绘图的动作落在更新区域内才做实际的绘图操作,这样做能够节省时间。而CDC的对象对应整个客户区,所以比起CPaintDC得到的dc可能效率低些。,设备上下文,3)CPaintDC包含了BeginPaint()和EndPaint()两个方法,因此如果我们在OnPaint()消息响应过程中创建CPaintDC对象,则不用再调用这两个方法;而若我们在OnPaint()中创建的是CDC对象,则需显式地调用这两个函数处理绘图的开始和终止。为简单起见,推荐在OnPaint()中使用CPaintDC类进行图形绘制。,WM_PAINT消息,WM_PAINT消息是Windows系统的标准消息
4、,当操作系统或其他应用程序发出请求要求画/重画一个应用程序窗口的一部分时,便会向该应用程序窗口发出该消息,该消息对绘图而言至关重要。比如:1)我们在客户区画一条直线,此时便会触发WM_PAINT消息2)应用程序窗口被其它窗口覆盖或最小化,而后再重新被激活(Activate),此时也会触发WM_PAINT消息,WM_PAINT消息,由于WM_PAINT消息为程序开发人员屏蔽了何时应对客户区执行刷新这样的繁琐细节,我们可将画图的具体过程放在WM_PAINT消息响应函数OnPaint()中调用。如果不在OnPaint()中调用画图过程,而在某个按钮或复选框的响应事件中调用,考虑会有什么后果。如果希望
5、客户区在下次系统发送WM_PAINT消息时被更新,则需先执行CWnd:Invalidate()函数,否则OnPaint()方法不会反映当前在客户区所作的更改。,WM_PAINT消息,需要注意的是,由于在绘图过程中,OnPaint()函数可能需要不断地设置当前DC的某些属性值,如颜色,线条的粗细等等,因此在该函数中,通常需要保存和还原有关DC的属性值,以保证在OnPaint()执行前后DC的状态是一样的,即实现该过程对用户的透明。具体地说,就是应在函数的开头缓存当前DC的属性值,而后在函数的末尾还原这些属性值,这样即使DC的属性在绘图过程中被改变,对用于而言,他操作的仍是原先的设备上下文(设备环
6、境)。,常用的绘图函数,以下是一些常用的绘图函数:1)设置画笔的当前位置CDC:MoveTo(int x,int y);CDC:MoveTo(POINT point);2)从当前位置向指定点画线段CDC:LineTo(int x,int y);CDC:LineTo(POINT point);我们在实现曲线算法时,实际上是通过许多小的直线段去拟合曲线。,常用的绘图函数,3)多点连接CDC:Polyline(LPPOINT lpPoints,int nCount);该函数可理解为若干次MoveTo和LineTo函数的复合4)绘制矩形CDC:Rectangle(int x1,int y1,int x
7、2,int y2);CDC:Rectangle(LPCRECT lpRect);,常用的绘图函数,5)绘制椭圆CDC:Ellipse(int x1,int y1,int x2,int y2);CDC:Ellipse(LPCRECT lpRect);6)在屏幕上打点CDC:SetPixel(int x,int y,COLORREF crColor);CDC:SetPixel(POINT point,COLORREF crColor);,常用的绘图函数,7)在屏幕上输出文本信息CDC:TextOut(int x,int y,const CString 以上函数基本上可以满足我们绘图的需要。当然,除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 VisualC 快速 构建 图形学 程序
链接地址:https://www.31ppt.com/p-4951804.html