兰州交通大学:《Visual 6.0实例教程》课程教学资源(PPT课件)第5章 图形操作

第5章图形操作 内容摘要 1.CD和CDC类 2.GD和 CGdiobject类 3.绘图程序实例 4.绘图程序实例二
第5章 图形操作 内容摘要: 1. CD和CDC类 2. GDI和CGdiObject类 3. 绘图程序实例一 4. 绘图程序实例二 返回目录

5.1 51CD和CDC类 学习目标 1.了解设备环境( Device context,简称DC)和设 备环境类(CDC) 2.利用设备环境类进行简单绘图
5.1 CD和CDC类 学习目标 1.了解设备环境(Device Context,简称DC) 和设 备环境类(CDC) 2. 利用设备环境类进行简单绘图 5.1 返回第5章

5.1 使用设备环境类绘图的一个简单例子 1.利用 AppWizard生成基于对话框程序框架( Bmp Test) 2.添加画线和画椭圆的代码( OnPaint()函数)见下页 3.代码解释 (1) CPaintdc dc(this);这句代码是生成一个 CPaintDo类的实例dc,生成后 就可以调用他的函数来进行绘图了。 (2) dc. Move To(30,30);调用dc的 MoveTo函数把画线的起点定在对话框的 (30,30)坐标点。 Move To函数的一般调用格式为: Move To(intx,int y),其中参数x,y是要画直线的起始点坐标。 (3) dc Line To(30,30);调用dc的 Lineto函数画线到(100,100)坐标点。 Lineto函数的一般调用格式为: Lineto(ntx,inty),其中参数x,y是所 画直线的终止点坐标。 (4) dc Ellipse(120,120,160,160);本句代码的作用是调用设备环境对象dc 的画椭圆函数 Ellipse画椭圆。 Ellipse函数的一般调用格式为: Ellipse ( LPCRECTlpRect),其中参数 lpRect是所画椭圆的外接矩形
使用设备环境类绘图的一个简单例子 1. 利用AppWizard生成基于对话框程序框架(BmpTest ) 2. 添加画线和画椭圆的代码 (OnPaint()函数) 见下页 3. 代码解释: (1)CPaintDC dc(this);这句代码是生成一个CPaintDC类的实例dc,生成后 就可以调用他的函数来进行绘图了。 (2)dc.MoveTo(30,30);调用dc的MoveTo函数把画线的起点定在对话框的 (30,30)坐标点。MoveTo函数的一般调用格式为:MoveTo(int x,int y),其中参数x,y是要画直线的起始点坐标。 (3)dc.LineTo(30,30);调用dc的LineTo函数画线到(100,100)坐标点。 LineTo函数的一般调用格式为:LineTo(int x,int y),其中参数x,y是所 画直线的终止点坐标。 ( 4)dc.Ellipse(120,120,160,160);本句代码的作用是调用设备环境对象dc 的画椭圆函数Ellipse画椭圆。Ellipse函数的一般调用格式为: Ellipse (LPCRECT lpRect),其中参数 lpRect是所画椭圆的外接矩形 。 5.1

void CBmp TestDlg: OnPaint if (sIconico) CPaintDc dc(this): l/ devce context for painting SendMessage(WM ICoNERASEBKGND, (WPARAM)dc. GetSafeHdco, 0) 1/ Center icon in client rectangle int axIcon GetSystemMetrics(SM_CXICON) int cylon GetSystemMetrICs(SM CYICON): CRect rect int x=(rect Width(-CXlcon+1)/2 int y=(rect. Height0-cylcon 1)/2: ∥ Draw the icon dc. Drawlcon(x, y, m hIcon) CPaintDC dc(this); device context for painting dc. Move To(10, 10); dc Line To(100, 100) dc Ellipse(120,120,160,160); CDialog: OnPaint
5.1 void CBmpTestDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND,(WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CPaintDC dc(this); // device context for painting dc.MoveTo(10,10); dc.LineTo(100,100); dc.Ellipse(120,120,160,160); CDialog::OnPaint(); } }

4.改变画图颜色 2.1 void CBmp TestDlg: OnPaint if ( lsIconicO) ∥与前一页代码相同; else CPaintDC dc(this); /device context for painting CPen newpen(PS SOLID, 1, RGB(0, 255, 0)) CBrush newbrush(RGB(0, 0, 255)) CPen *pOldpen=dc Selectobject(&newpen) CBrush *pOldbrush=dc Selectobject(&newbrush) dc MoveTo(10, 10) dc LineTo(100, 100) dc. B ipse(8080,120.12 dc Selectobject(poldpen); dc Selectobject(poldbrush) CDialog On Paint
2.1 void CBmpTestDlg::OnPaint() { if (IsIconic()) { //与前一页代码相同; else { CPaintDC dc(this); // device context for painting CPen newpen(PS_SOLID,1,RGB(0,255,0)); CBrush newbrush(RGB(0,0,255)); CPen *pOldpen=dc.SelectObject(&newpen); CBrush *pOldbrush=dc.SelectObject(&newbrush); dc.MoveTo(10,10); dc.LineTo(100,100); dc.Ellipse(80,80,120,120); dc.SelectObject(pOldpen); dc.SelectObject(pOldbrush); CDialog::OnPaint(); } } 4.改变画图颜色

5.1 代码解释: 1. CPen newmen( PS SOLID,1,RGB(0,2550));生成一支颜色为绿色、宽度为1个像 素的实心画笔。 2 CBrush newbrush(RGB(0,0,255));生成一只颜色为蓝色的画刷。 3CPen* pOldpen= dc Selectobject(& newmen);把刚生成的画笔选进设备环境对象dc, 这样再画线就用新的笔了。当 Selectobject函数的参数为画笔类型时,返回值为原来所 用画笔的指针, 4 CBrush* pOldbrush=dc. Selectobject(& Rnewbrush);把刚生成的画刷选进设备环境对 象dc。当 Selectobject函数的参数为画刷类型时,返回值为原来所用画刷的指针 5dc. Selectobject( pOldpen);绘图完毕后把原来的画笔再选进设备环境对象。 6dc. Selectobject( pOldbrush);绘图完毕后把原来的画刷再选进设备环境对象 Cpen类的构造函数声明是: CPen(int nPenStyle, int n Width, COLORREF crColor) 参数 oPen Style指明画笔的风格。 n width指明以象素为单位的画笔宽度。 crColor包含了 画笔的RGB值 n Pen Style的取值有以下几种: PS SOLD:创建一支实线画笔 PS DASH:创建一支虚线画笔 PS DOT:创建一支点线画笔 PS DASHDOT:创建一支虚线和点交替的画笔 PS DASHDOTDOT:创建一支虚线和两点交替的画笔
5.1 代码解释: 1.CPen newpen(PS_SOLID,1,RGB(0,255,0));生成一支颜色为绿色、宽度为1个像 素的实心画笔。 2.CBrush newbrush(RGB(0,0,255));生成一只颜色为蓝色的画刷。 3.CPen *pOldpen=dc.SelectObject(&newpen);把刚生成的画笔选进设备环境对象dc, 这样再画线就用新的笔了。当SelectObject函数的参数为画笔类型时,返回值为原来所 用画笔的指针。 4.CBrush *pOldbrush=dc.SelectObject(&newbrush);把刚生成的画刷选进设备环境对 象dc。当SelectObject函数的参数为画刷类型时,返回值为原来所用画刷的指针。 5.dc.SelectObject(pOldpen);绘图完毕后把原来的画笔再选进设备环境对象。 6.dc.SelectObject(pOldbrush);绘图完毕后把原来的画刷再选进设备环境对象。 Cpen类的构造函数声明是: CPen(int nPenStyle,int nWidth,COLORREF crColor); 参数nPenStyle指明画笔的风格。nWidth指明以象素为单位的画笔宽度。crColor包含了 画笔的RGB值。 nPenStyle的取值有以下几种: PS_SOLD: 创建一支实线画笔。 PS_DASH : 创建一支虚线画笔。 PS_DOT : 创建一支点线画笔。 PS_DASHDOT: 创建一支虚线和点交替的画笔。 PS_DASHDOTDOT: 创建一支虚线和两点交替的画笔

5.2 52GD和 CGdiobject类 学习目标 1.了解图形设备接口 2.了解类 CGdiobject极其派生类
5.2 GDI和CGdiObject类 学习目标 1.了解图形设备接口 2. 了解类CGdiObject极其派生类 5.2 返回第5章

5.2 绘图程序实例 1.用应用向导产生单文档程序框架( Bmp Test) 2.修改、添加瓷源 1.添加菜单 1. ID GRAPH TRACK 轨迹 2. ID GRAPH MOVE 移动 2.添加位图 IDB BITI 2. IDB BIT2 3.添加数据类型及变量
绘图程序实例一 1. 用应用向导产生单文档程序框架(BmpTest ) 2. 修改、添加资源 1. 添加菜单 1. ID_GRAPH_TRACK 轨迹 2. ID_GRAPH_MOVE 移动 2. 添加位图 1. IDB_BIT1 2. IDB_BIT2 3. 添加数据类型及变量 5.2

class CMoveTestView: public Cview 5.2 protected: /create from serialization only CMoveTestviewO DECLARE_ DYNC REATE(CMoveTestview) private CString flag: BOoL drawtrack struct pointstruct( CPoint point; struct pointstruct "next } struct pointstruct *pointlisthead, * pointlisttrail flag:判断选择的是“轨道”菜单项还是“车轮”菜单项按钮: drawtrack:当用户选择轨道菜单项时,判断是否画轨道; struct pointstruct:用来记录轨道中各个点的结构体 pointlisthead:用户所绘制轨道的点链表的头结点 pointlisttrail:用户所绘制轨道的点链表的尾结点
class CMoveTestView : public CView { protected:// create from serialization only CMoveTestView(); DECLARE_DYNCREATE(CMoveTestView) private: CString flag; BOOL drawtrack; structpointstruct{ CPointpoint; structpointstruct*next; }; structpointstruct*pointlisthead,*pointlisttrail; …… } 5.2 flag:判断选择的是“轨道”菜单项还是“车轮”菜单项按钮; drawtrack:当用户选择轨道菜单项时,判断是否画轨道; struct pointstruct:用来记录轨道中各个点的结构体; pointlisthead:用户所绘制轨道的点链表的头结点; pointlisttrail:用户所绘制轨道的点链表的尾结点

4.添加函数 5.2 1.添加菜单响应函数 void CMove TestView:: On GraphMoveo flag="move MoveObjecto void CMove Testview:: On Graph Track flag="track 代码解释: 2当选择菜单“移动”时,把贴值为么a2 1.当选择菜单“轨迹”时,把fag赋值为“ move i 3. Moveobject();调用此函数可产生沿着画好轨道运动的 车轮。该函数将在后面给出
4. 添加函数 1.添加菜单响应函数 5.2 void CMoveTestView::OnGraphMove() { flag="move"; MoveObject(); } void CMoveTestView::OnGraphTrack() { flag="track"; } 代码解释: 1.当选择菜单“轨迹”时,把flag赋值为“track”; 2.当选择菜单“移动”时,把flag赋值为“move”; 3.MoveObject();调用此函数可产生沿着画好轨道运动的 车轮。该函数将在后面给出
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 兰州交通大学:《Visual 6.0实例教程》课程教学资源(PPT课件)第4章 菜单、快捷键和控制条.ppt
- 兰州交通大学:《Visual 6.0实例教程》课程教学资源(PPT课件)第3章 对话框与控件.ppt
- 兰州交通大学:《Visual 6.0实例教程》课程教学资源(PPT课件)第2章 文档和视.ppt
- 兰州交通大学:《Visual 6.0实例教程》课程教学资源(PPT课件)目录.ppt
- 《计算机文化基础》课程PPT教学课件:课堂提问3.ppt
- 《计算机文化基础》课程PPT教学课件:课堂提问2.ppt
- 《计算机文化基础》课程PPT教学课件:课堂提问.ppt
- 《计算机文化基础》课程PPT教学课件:第五讲 文字处理系统Word2000.ppt
- 《计算机文化基础》课程PPT教学课件:PowerPoint.ppt
- 《计算机文化基础》课程PPT教学课件:复习.ppt
- 《计算机文化基础》课程PPT教学课件:Exce电子表格.ppt
- 《计算机文化基础》课程PPT教学课件:计算机网络基础.ppt
- 《计算机文化基础》课程PPT教学课件:计算机信息系统安全.ppt
- 《计算机文化基础》课程PPT教学课件:第四讲 WINDOW使用基础.ppt
- 《计算机文化基础》课程PPT教学课件:第三讲 操作系统发展与DOS.ppt
- 《计算机文化基础》课程PPT教学课件:第二讲 计算机工作原理与数字信息编码.ppt
- 《计算机文化基础》课程PPT教学课件:第一讲 计算机的发展与应用.ppt
- 《局域网技术》课程PPT教学课件(组网工程)07 综合布线系统.ppt
- 《局域网技术》课程PPT教学课件(组网工程)06 网络安全.ppt
- 《局域网技术》课程PPT教学课件(组网工程)05 Windows 2000 Server组网技术.ppt
- 兰州交通大学:《Visual 6.0实例教程》课程教学资源(PPT课件)第6章 文件操作.ppt
- 兰州交通大学:《Visual 6.0实例教程》课程教学资源(PPT课件)第7章 MFC通用类.ppt
- 兰州交通大学:《Visual 6.0实例教程》课程教学资源(PPT课件)第8章 常处理和诊断.ppt
- 兰州交通大学:《Visual 6.0实例教程》课程教学资源(PPT课件)第9章 多线程.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 01 绪论.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 10 网络安全解决方案.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 02 物理安全.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 03 信息加密与PKI.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 04 防火墙技术.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 05 入侵检测技术.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 06 访问控制技术.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 07 网络安全检测与评估技术.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 08 计算机病毒防范技术.ppt
- 《计算机网络安全技术教程》教学资源(PPT课件讲稿)ch 09 备份技术.ppt
- 北京大学计算机系:《操作系统原理 Principles of Operating System》课程教学资源(PPT课件讲稿)绪论(主讲:陈向群).ppt
- 北京大学计算机系:《操作系统原理 Principles of Operating System》课程教学资源(PPT课件讲稿)第一章 操作系统概述.ppt
- 北京大学计算机系:《操作系统原理 Principles of Operating System》课程教学资源(PPT课件讲稿)第十章 分布式系统中的同步问题.ppt
- 北京大学计算机系:《操作系统原理 Principles of Operating System》课程教学资源(PPT课件讲稿)第十一章 分布式系统中的进程及处理器.ppt
- 北京大学计算机系:《操作系统原理 Principles of Operating System》课程教学资源(PPT课件讲稿)第十二章 分布式文件系统.ppt
- 北京大学计算机系:《操作系统原理 Principles of Operating System》课程教学资源(PPT课件讲稿)第二章 进程管理.ppt