VC++单文档程序设计(1)_第1页
VC++单文档程序设计(1)_第2页
VC++单文档程序设计(1)_第3页
VC++单文档程序设计(1)_第4页
VC++单文档程序设计(1)_第5页
已阅读5页,还剩5页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、YC+単出禾呈序设计Tngban课计划课次序号:一、课题:ch5单文档程序编程(1)字体与绘图二、课型:讲授三、目的要求:1、理解设备环境类CDC及其派生类的功能与使用方法。2、理解图形设备接口 GDI类的功能及使用方法。3、学会字体设置和文本输出。4、学会简单的图形绘制方法。四、重点、难点:重点内容:字体设置与文本输出、图形绘制。难点:正确理解CDC类和GDI类的功能与使用方法。五、教学方法及手段:采用案例教学,在实例中理解CDC类和GDI类的使用,重点讲解其中的儿个功能, 其他的要求学生课下逐步深入学习,达到举一反三的目的。六、参考资料:VC+实用教程(第二版)郑阿奇编著,电子工业岀版社第

2、8章C+面向对象程序设计李涛编著,高等教育出版社,第10章七、作业:简答:习题,设计:(1)(2)单文档实验内容1:编写单文档应用程序,当用户双击鼠标左键时,能在客户 区画一个椭圆,并用45度交叉线填充。八、授课记录:授课日期班次九、授课效果分析:卜、教学进程(教学内容、教学环节及时间分配等)1、复习单文档应用程序的特点:应用程序类、主框架类、文档类、视图类文档与视图的关系2、导入课题如何再单文档窗口中按照需要输出文本、绘制图形呢利用CDC类和GDI接口类,它封装了绘图所需要的所有函数,是用户编写图形和文 字处理程序必不可少的。3、教学内容概述一、设备环境类:1、CDC 类:设备环境是Wind

3、ows保存的一个数据结构,该结构包含应用程序向设备输 出时所需要的信息,例如图形是在屏幕上输出还是在打印机上输出。为了让用户使用一些特殊的设备环境,MFC还提供了 CDC类的派生类,CPaintDC、CCIientDC、CwindowDC CmetaFileDC其中,前两个较常用。2、CDC类的主要功能:SelectObject():选择绘图对象,返回被替代的对象的指针,常用于选择画笔、画 刷、字体、图片等。M oveT o ():移动勺前位置LineTo():从当前位置画线Ellipse():画椭圆TextOut():用当前字体在指定位置输出文本二、颜色和颜色对话框的使用绘图和显示文本时都要

4、按照指定的(或默认的)颜色执行。常用的颜色空间右RGB和YUV两种。其中,RGB颜色空间选用红、绿、蓝三种颜色的分量配比来表示,即三基色原 理。而YUV颜色空间用亮度(Y)和色差(V、U)表示。在MFC中采用RGB颜色空间。编程设置颜色的方法有两种:方法一、通过程序代码直接设置,比如可以将颜色表示为:RGB(int r,int g,int b);或 COLORREF clr;方法二、利用MFC的颜色对话框选择设置:MFC的CColorDialog类提供了颜色选择通用对话框,供用户选择颜色。具体 用法:CColorDialog dig;lf=IDOK)COLORREF myColor=();颜色

5、对话框举例:在单文档视图中用选定的颜色输出一句话“这是我自己选 的颜色!”。实现:在单文档程序的视图类的OnDraw()中添加如下代码:void CEx_colordlgView:OnDraw(CDC* pDC) CEx_colordlgDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereCOLORREF myColor;CColorDialog dig;if()=IDOK)myColor=();pDC-SetTextColor(myColor); 设置文本的颜色值 pDC

6、-TextOut(20,50/这是我自己选的颜色!);若改用 RGB()直接设置:COLORREF myColor =RGB(0,0,250);则文字以蓝色显示。三、通用对话框使用说明:MFC提供了许多通用对话框类,比如颜色设置对话框、字体设置对话框(CFontDialog)、查找替换对话框(CFindReplaceDialog) 打印对话框(CPrintDialog)、页面设置对话框(CPageSetupDialog)、文件对话框 (CfileDialog,打开或保存文件)。它们的使用方法类似,课下尝试练习字体一、字体的结构与字体类:1、字体结构中包含了字体的属性,比如高度、宽度、相对页面的

7、角度、重 量(如粗体)、斜体、下划线、删除线、字符集、字体名称等。详见教材 P174结构体LOGFONT的定义。熟悉或了解即可2、字体类:Cfont3、字体对象的使用步骤:同GDI对象,包括定义字体对象、创建字体对象、选入设备环境、使用、删 除、恢复等二、创建字体对象的方法:在程序中设定字体的各个属性值,利用CreateFont();创建字体对象。比如,示例P182-183 要求:了解使用方法2、调用字体设置对话框类取的用户选择的字体,保存在LOGFONT类型的 变量中,然后调用 CreateFontlndirectfconst LOGFONT *lpLF);创建字体对 象。3、CreateP

8、ointFont(); /简单方法,只能设定字体大小三、字体应用:功能:在单文档程序的客户区双击鼠标,在鼠标指定位置按照设定的字体显示 一句话“字体随意设,简单吧! ”。其中,字体设置功能是通过在主菜单中添加 一个菜单项“字体设置”,单击该菜单项,打开字体设置对话框,共用户设置字 体、字号等属性。单击确定后新的字体有效。实现方法:(1) 创建单文档应用程序ex_font(2) 在视图类中添加变量:LOGFONT mfText;int m_xPos, m_yPos; 表示当前鼠标点击的坐标(3) 添加菜单项:在资源视图中打开Menu资源中的IDR_MAINFRAME,在最 后的空口项上右击,添加

9、一个新菜单项的名称、ID号(ID_FONT_TEST)o(4) 在类向导中为新的菜单项添加COMMAND命令映射函数:OnFontTest() void CEx_fontView:OnFontTest()/ TODO: Add your command handler code hereCFontDialog dig;if()=IDOK)(&m_lfText);获取当前选择的字体对象(5) 在类向导中添加视图类双击鼠标的WM_LBUTTONDBLCLK消息映射函数:void CEx_fontView:OnLButtonDblClk(UINT nFlags, CPoint point)/ TOD

10、O: Add your message handler code here and/or call defaultm_xPos=;m_yPos=;lnvalidate(); 调用 OnDraw()重画窗口CViewiiOnLButtonDbIClkfnFlags, point);(6) 在视图类的OnDraw()中添加代码:CFont cf; 定义字体对象(&m_lfText); 创建字体CFont * oldFont=pDC-SelectObject(&cf); /选定字体到当前设备环境pDC-TextOut(m_xPos,m_yPos/字体随意设,简单吧!);/输出文本();删除字体对象p

11、DC-SelectObject(oldFont); 恢复原来的字体(7) 运行:单及“字体设置”,设置字体,然后双击客户区。反复进行。 小结:字体的使用方法(定义字体对象、创建字体对象、选入设备环境、使 用、删除、恢复等),结合实例理解并熟练掌握。简单图形绘制Windows系统为应用程序的绘图操作提供了一个图形设备接口,用于处理来自应用 程序的图形函数调用。一、图像设备接口 GDIMFC将各种绘图工具(如画笔、画刷、字体等)封装成GDI类,比如:CPen CBrush CFont CBitmap Cpalette CRgn二、使用GDI对象绘图的步骤:(1) 定义一个GDI对象,比如:CPen

12、 m_pen;(2) 调用该对象的成员函数创建对象,比如:(PS_SOLID,2,RGB(0,0,0); 创 建画笔(3) 将该对象选入当前设备环境中,同时注意保存原来GDI对象。比如:CPen * pOldPen=pDC-SelectObject(&m_pen);(4) 绘图结束后,恢复当前设备环境中原来的GDI对象。比如:pDC-SelectObject(pOldPen);三、画笔的创建:CPen:CreatePen(int nPenStyle, int nWidth, COLORREF crColor)参数1:画笔的风格,如实线、虚线、点线等。参数2:线宽参数3:颜色四、画刷的创建1、创

13、建固定颜色的画刷BOOL CBrush:CreateSolidBrush(COLORREF crColor);2、创建指定颜色和风格的画刷BOOL CBrush: CreateHatchBrush(int nlndex,COLORREF crColor);/ nlndex指定画刷的风格,如HS_VERTICAL为垂直阴影线3、创建以8*8位图为模板的画刷BOOL Cbrush:CreatePatternBrush(Cbitmap * pBitmap);五、应用GDI实现简单的绘图:功能要求:在单文档程序主菜单中添加“画刷”、“画笔”两个菜单项,当单击 “画刷”时,在客户区画一个椭圆(垂直阴影线

14、填充);当单击“画笔”时,在 客户区画实线。实现过程:(1) 创建单文档程序ex_pen_brush(2) 在资源视图中为IDR_MAINFRAME主菜单资源添加菜单项(名称、ID:ID_PEN、ID_BRUSH)(3) 在视图类中添加一个用于识别“画笔”和“画刷”菜单项的变量:enum PEN/BRUSHm_GdiType;(4) 在视图类中添加两个菜单项的命令函数:void CEx_pen_brushView:OnBrush()m_GdiType二BRUSH; lnvalidate(); void CEx_pen_brushView:OnPen()m_GdiType=PEN;lnvalid

15、ate();(5) 在OnDraw()函数中添加绘图代码:CPen newPen/pOldPen; 定义画笔对象switch(m_GdiType)case PEN:(PS_SOLID2RGB(0A255); 创建画笔pOldPen=pDC-SelectObject(&newPen); pDC-MoveTo(20/20);pDC-LineTo(300,20);pDC-SelectObject(pOldPen); 恢复系统画笔break;case BRUSH:CBrush newBrush, *pOldBrush;(HS_VERTICAL,RGB(O,255,255); pOldBrush=pDC-SelectObject(&newBrush);pDC-Ellipse(40,40/300/300)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论