设备环境与屏幕绘画讲义

上传人:aa****6 文档编号:54682771 上传时间:2018-09-17 格式:PPT 页数:67 大小:396.50KB
返回 下载 相关 举报
设备环境与屏幕绘画讲义_第1页
第1页 / 共67页
设备环境与屏幕绘画讲义_第2页
第2页 / 共67页
设备环境与屏幕绘画讲义_第3页
第3页 / 共67页
设备环境与屏幕绘画讲义_第4页
第4页 / 共67页
设备环境与屏幕绘画讲义_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《设备环境与屏幕绘画讲义》由会员分享,可在线阅读,更多相关《设备环境与屏幕绘画讲义(67页珍藏版)》请在金锄头文库上搜索。

1、第6章 设备环境与屏幕绘图,了解设备环境和设备环境类熟练使用设备环境类及图形设备接口(GDI)对象进行绘图熟练掌握工具栏的设计、菜单设计掌握快捷菜单的设计和显示方法掌握鼠标形状的设计和调用,教学目标,Visual C+程序设计电子教案-王明福编,教学内容,程序演示 设备环境 图形设备接口(GDI)对象 矢量图形 绘图程序 完善绘图程序 快捷菜单,返 回,6.1 绘图程序,返回目录,程序运行结果,程序运行演示,绘图程序(续),返 回,四大功能: (1) 绘制“直线”、“矩形”、“圆角矩形”和“椭圆”基本图形,以及图形填充,并用不同的鼠标光标来标识当前选择的绘图类型; (2) 能设置画笔的粗细(线

2、宽)和绘图颜色; (3) 提供菜单、工具栏按钮和快捷键等方式选择; (4) 能通过快捷菜单选择要绘制的基本图形。 功能分解: 本章我们将按知识点进行目标分解,按以下步骤完成该程序的开发: (1) 编写提供工具栏按钮选择方式的绘图程序; (2) 增加菜单和快捷键选择方式,改善人机交互; (3) 添加快捷菜单完善程序。,返 回,6.2 设备环境,6.2.1 设备环境的概念 6.2.2 设备环境类,返回目录,要点提示:,设备环境的概念,返回目录,设备环境也称设备上下文(Device Context, 简称DC),是计算机物理设备的代表,也是图形设备接口的主要组成部分。 由于Windows是一个与设备

3、无关的操作系统,即Windows不允许直接访问硬件,如果用户想将文本和图形绘制到显示器或其它某个设备中去,必须通过“设备环境”这个抽象层与硬件进行通信,设备上下文对象的作用就是实现Windows的设备无关性,任何向屏幕上进行输出的功能都要间接地通过它来完成。设备上下文是Windows的一种数据结构,它包含了有关如显示器或打印机等设备的绘画属性信息。所有的绘画都是通过设备上下文对象来实现的,该对象封装了Windows的画线、图形和文本的API函数。设备上下文允许在Windows下的独立于设备的绘画。设备上下文不仅能够被用来在屏幕上绘画,它也可以将绘画输出到打印机和图元文件中。,设备环境类,返回目

4、录,设备环境类CDC直接继承于CObject类,该类定义了一类设备对象。CDC对象提供了非常多的成员函数,与设备环境的显示器、打印机等一起工作。MFC提供了几个CDC的派生类:CPaintDC和CClientDC,以供特殊用途。其中CClientDC的对象用于管理窗口的用户区,即窗口中不含工具条、状态栏和滚动条的区域。CPaintDC类封装了Windows的通用习惯用法:调用CWnd:BeginPaint函数,然后在上下文中绘画,再调用CWnd:EndPain函数。设备环境类CDC及其派生类如图6-2所示。,转下页,设备环境类CDC基类,返 回,CDC类是其它DC类的基类,CDC类封装了使用设

5、备环境的各种GDI函数,它用于定义一个设备环境对象,并提供了在显示器、打印机和窗口的客户程序区域上画图的方法。 (1) 在视图类的OnDraw函数中绘图 void CMyHelloView:OnDraw( CDC * pDC ) CMyHelloDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);pDC-SelectStockObject(LTGRAY_BRUSH); /选择刷子CRect rect(10,10,200,70); /定义一个矩形pDC-Rectangle( rect); /画一个矩形pDC-TextOut(100,80,“Hello, 我们

6、开始VC+编程了!“);/绘制文本 ,转下页,设备环境类CDC基类(续),返 回,(2) 在视图类的一般函数中绘图 调用GetDC()函数获得显示设备环境DC的指针pDC进行绘图,但绘图完毕后,必须调用ReleaseDC函数来释放它。程序实现如下: void CMyHelloView:OnLButtonDown(UINT nFlags, CPoint point) CRect rect;CDC *pDC = GetDC( );pDC-Rectang(rect);/ 绘图ReleaseDC(pDC);/ 释放pDCCview: OnLButtonDown(UINT nFlags, CPoint

7、point); ,转下页,设备环境类CPaintDC类,CPaintDC对象代表了一个窗口的绘图画面,主要用于对话框程序绘图,用来处理Windows的WM_PAINT消息。改变窗口大小或移动覆盖在窗口上的窗口或对话框时,Windows会发送WM_PINT消息以通知客户区的变动,而WM_PAINT消息的处理是在OnPaint消息处理函数中进行。绘图的步骤是: (1)创建一个CPaintDC的对象:CPaintDC dc(this); (2)调用CPaintDC的函数进行绘图; (3)撤消该CPaintDC的对象。void MyTestDlg:OnPaint() CPaintDC dc(this)

8、; /生存一个CPaintDC类的实例dc dc.Ellipse(120,120,160,160);/ 调用画椭圆函数Ellipse,CDialog:OnPaint();,转下页,返 回,设备环境类CClientDC类,CClientDC用来自动处理对描述窗口的客户程序区域的设备环境进行调用和释放。在CClientDC创建时自动调用GetDC ( ),在撤消时将自动调用ReleaseDC ( )。例如,在客户区画一条直线。 void CMyHelloView:OnLbuttonDown(UINT nFlags, CPoint point) CClientDC dc(this);CRect re

9、ct;GetClientRect( ,返回目录,6.3 图形设备接口(GDI)对象,6.3.1 画笔: CPen类 6.3.2 画刷: CBrush类 6.3.3 字体: CFont类 其它:,返回目录,GDI对象与设备环境对象的关系,类似于笔和纸的关系。也就是GDI提供了用于在DC上画图的绘图工具。MFC的GDI中包含了各种绘图类并提供各类的绘图函数,即定义了若干种对于Windows的绘工具的图形对象,它们包括:,使用GDI对象作图步骤,返 回,使用MFC程序中的图形设备接口(GDI)对象,通常按以下步骤操作:1定义一图形对象,并用对应的Create*方法对该对象进行初始化。例如,如要创建一

10、个CPen对象,请使用CreatePen()方法。2一般使用CDC:SelectObject()方法选定放入当前设备环境的新对象。该方法返回一个指向被替换的对象的指针。3在选定图形对象后,用各种画图函数画图。完成后,再次使用CDC:SelectObject()方法,选定被替换的图形对象,重新放入设备环境,使一切恢复其原样。,CPen类封装了一个Windows GDI画笔,并且提供了用于操作CPen对象的若干方法。CPen类用来决定画线的风格和颜色。 在使用画笔之前,首先必须构造画笔对象,有两种方法: (1) 构造和初始化对象都在带参数的构造函数中一步完成,例如,生存一支颜色为绿色、宽度为2个象

11、素的实心画笔:CPen newPen(PS_SOLID,2, RGB(0,255,0); (2) 构造和初始化分两步完成,构造由不带参数的构造函数完成,而初始化由初始化函数完成,如:CPen newPen;newPen.CreatePen(PS_SOLID,2,RGB(0,255,0);,GDI对象画笔:CPen类,返回目录,画笔作图实例,返 回,例如,用一支颜色为绿色、宽度为2个象素的实心画笔画椭圆的程序段如下: CDC* pDC=GetDC(); /获得显示设备环境DC的指针pDC CPen newPen; newPen.CreatePen(PS_SOLID,2,RGB(0,255,0);

12、 /将画笔选入内存DC,同时暂时挤出并保存原画笔 Cpen *poldpen=pDC-SelectObject( /释放显示DC,GDI对象画刷:CBrush类,返 回,CBrush类封装了一个Windows GDI画刷,并且提供了用于操作CBrush对象的若干方法。画刷可设置画刷的色彩和区域填充的绘图方法。在使用画笔、画刷之前,首先必须构造画笔、画刷对象,有两种方法: (1) 构造和初始化对象都在带参数的构造函数中一步完成,如:CBrush newBrush(RGB(0,0,255); /蓝色画刷 (2) 构造和初始化分两步完成,构造由不带参数的构造函数完成,而初始化由初始化函数完成,如:C

13、Brush newBrush ;newBrush.CreateSolidBrush(RGB(0,255,0);例如,(转下页),画刷填充作图实例,返 回,用一支颜色为绿色、宽度为2个象素的实心画笔画椭圆,并用蓝色画刷填充椭圆内部的程序段如下(若不填充,相关画刷语句省略): CDC* pDC=GetDC(); /获得显示设备环境DC的指针pDC CPen newPen(PS_SOLID,2,RGB(0,255,0); CBrush newBrush(RGB(0,0,255); CPen* poldpen=pDC-SelectObject( /释放显示DC,GDI对象字体:CFont类,返 回,C

14、Font对象封装了一种Windows GDI字体,并且提供了用于操作CFont对象的若干方法。CFont类用来决定绘图文本时的字体,要使用字体,必须先创建字体,然后将其选进要进行文本输出的DC,就可以利用文本输出函数显示该字体形式的文本内容了。 创建字体由两步完成: (1) 定义一个CFont类的对象,应用框架会调用构造函数,如:CFont myFont; (2) 调用CFont类的创建字体函数,从而将构造的CFont对象与Windows的某种字体相关联。myFont.CreateFont(); /注:参见CreateFont函数原型,CreateFont()的原型,返 回,BOOL Crea

15、teFont(int nHeight, /字体高度int nWidth, /字符平均宽度int nEscapement, /文本行角度int nOrientation, /字符角度int nWeight, /字符粗细度BYTE bItalic, /斜BYTE bUnderline,/下划线BYTE cStrikeOut,/删除线BYTE nCharSet, /字符集BYTE nOutPrecison,/字体输出结果和要求的匹配程度BYTE nClipPrecison,/如何裁剪落于裁剪区之外的字符BYTE nQuality, /字体属性匹配的精确程度BYTE nPitchAnFamily,/字

16、体间距和字体簇BYTE lpszFacename /字体名称);,字体应用实例,返 回,例如,图6-5是字体显示函数FontOut()的运行结果 void CVc09View:OnDraw(CDC* pDC) CVc09Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);pDC-SetBkColor(RGB(240,240,250);/设置背景颜色pDC-SetTextColor(RGB(255,0,0);/ 设置文本颜色int ny = -5;int ndl = 0;for (int i = 24; i = 12; i -= 4) FontOut(pDC, ny, i, ndl);ndl += 300; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号