《Visual C++ 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 C++ 6.0实例教程》教学资源(PPT课件讲稿)第4章 菜单、快捷键和控制条.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第3章 对话框与控件.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第2章 文档和视.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)目录.ppt
- 《电子政务教案》第8章 电子政务与政府流程优化.ppt
- 《电子政务教案》第5章 全球电子政务建设实践.ppt
- 《电子政务教案》第4章 政府公共服务的电子化.ppt
- 《电子政务教案》第3章 电子政务的基础与核心.ppt
- 《电子政务教案》第2章 电子政务对政府管理的影响.ppt
- 《电子政务教案》第1章 信息技术的发展与电子政务的产生.ppt
- 《电子政务教案》第11章 我国电子政务的发展战略.ppt
- 《电子政务教案》第10章 电子政务的法律环塘.ppt
- 《电子政务教案》第9章 电子政务的安全管理.ppt
- 《电子政务教案》第7章 电子政务的系统规划与建设.ppt
- 《电子政务教案》第6章 电子政务的技术基础.ppt
- 《电子商务概论》课程教学资源(PPT课件讲稿)第四章 电子数据交换.ppt
- 《电子商务概论》课程教学资源(PPT课件讲稿)第十章 电子商务网站的建设.ppt
- 《电子商务概论》课程教学资源(PPT课件讲稿)第六章 电子商务支付系统.ppt
- 《电子商务概论》课程教学资源(PPT课件讲稿)第八章 电子商务的物流体系.ppt
- 《电子商务概论》课程教学资源(PPT课件讲稿)第五章 电子商务安全技术.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第6章 文件操作.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第7章 MFC通用类.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第8章 异常处理和诊断.ppt
- 《Visual C++ 6.0实例教程》教学资源(PPT课件讲稿)第9章 多线程.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)绪论(主讲:花芳).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)第一章 文献及概念.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)第二章 文献检索原理及方法.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)工程索引 The Engineering Index(Ei简介).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)Elsevier全文电子期刊说明.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)IEEE/IEE Electronic Library(IEL).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)科学文摘数据库(INSPEC).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)博硕士论文数据库.ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)机检上课及实习安排.doc
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)Science Abstracts(SA).ppt
- 清华大学:《科技文献检索》课程教学课件(PPT讲稿)科学引文索引.ppt
- 清华大学:《科技文献检索》课程教学资源(学习资料)参考课题.doc
- 《计算机应用技术基础》第五章 创建图表体验数据功析效果.ppt
- 《计算机应用技术基础》第三章 制作会议日程表.ppt
- 《计算机应用技术基础》第一章 计算机基础知识.ppt
- 《计算机应用技术基础》第七章 用图表进行数据分析.ppt