用C语言程序来设计奥运五环图案.doc_第1页
用C语言程序来设计奥运五环图案.doc_第2页
用C语言程序来设计奥运五环图案.doc_第3页
用C语言程序来设计奥运五环图案.doc_第4页
用C语言程序来设计奥运五环图案.doc_第5页
全文预览已结束

VIP免费下载

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

文档简介

怎么样用C语言程序来设计奥运五环图案1. 创建一个基于单文档的工程 ex19(01)打开菜单“FileNew”,在弹出的新建(New)对话框左边的工程(Project)选项卡中选择“MFC AppWizard(exe)”,在右边的工程名(Project Name)处输入“ex19”,单击确认(OK)按钮。(02)在弹出的 MFC 应用程序向导(MFC AppWizard)对话框中选择单文档(SingleDocument)类型。单击结束(Finish)按钮。(03)在弹出对话框中显示所有配置信息。单击确定(OK)按钮创建新的工程。2. 设计 ex19 工程的菜单及快捷键首先添加新的菜单选项。(04)将 Workspace 窗口切换至资源查看(ResourceView)选项卡,展开菜单(Menu)选项,然后双击 ID 为 IDR_MAINFRAME 的项目,右边窗格中将显示该菜单资源。(05)在窗格中右击菜单中的虚线框,然后在弹出菜单中选择属性(Properties)选项,如图5.4 所示。(06)在弹出的菜单属性(Menu Item Properties)对话框的一般(General)选项卡右边的说明文字(Caption)栏,输入说明文字“绘图(&P)”,然后关闭属性对话框完成修改。操作说明在文字说明栏中在一个字母前加&符号,表示给该字母加下划线。这里的“绘图(&P)”最后在菜单中的显示结果为“绘图(P)”。在程序运行时,可以先按住键盘的 Alt 键不放,再按下相应的字母键选中该菜单选项。(07)在刚添加的“绘图”弹出菜单下面会出现一个新的虚线框,双击该虚线框弹出菜单属性对话框,在对话框一般(General)选项卡的左边 ID 栏设定菜单选项的 ID 为ID_MENUITEM_PAINT,在右边的说明文字(Caption)栏输入 “绘制奥运五环(&P)”。输入完毕后关闭属性对话框。操作说明弹出菜单属性对话框有两种方法:一种是在虚线框上单击鼠标右键,然后在弹出菜单中选择属性选项,如步骤(05);另一种方式是直接双击虚线框,如步骤(07)。(08)按照步骤(07)在“绘图”弹出菜单中再添 加 一 个 新 的 菜 单 选 项 , ID 为ID_MENUITEM_CLEAR,说明文字为“清除图案(&C)”。修改完后的“绘图”弹出为了加速操作过程,对一些常用的功能需要定义快捷键,通过相应的快捷键可以快速调用菜单的相关功能。下面开始定义快捷键:(09)在资源查看(ResourceView)选项卡里展开快捷键(Accelerator)选项,然后双击IDR_MAINFRAME 项目,在右边的窗格中显示该菜单的快捷键,如图 5.6 所示。(10)双击最后一行的虚线框,在弹出的快捷键属性对话框中的 ID 栏,选择需要添加快捷键的菜单的 ID,如选择 ID_MENUITEM_PAINT,在键值(Key)栏选择键值为 P,在右边的修饰键(Modifiers)栏确认选中 Alt 和 Ctrl 复选框,然后在类型(Type)栏选择快捷键属性为 Virtkey。关闭该对话框。本步相当于设定“绘制奥运五环”菜单选项的快捷键为 Ctrl+Atl+P。(11)按照步骤(10)设置 ID_MENUITEM_CLEAR 对应的菜单选项快捷键的键值为 C,修饰键为 Alt 和 Ctrl,类型为 VirtKey。在程序运行时,可以通过添加的快捷键直接访问这两个菜单选项。3. 向文档类 CEx19Doc 添加成员函数与成员变量先通过类向导(ClassWizard)对话框,添加消息相应函数。与对话框控件一样,文档视图的菜单的作用原理也是消息响应机制。消息相应机制的原理参见第 4 章的“热身训练”。(12)打开菜单“ViewClassWizard”,弹出类向导(ClassWizard)对话框。向 CEx19Doc类添加两个菜单选项的消息响应函数。具体操作参见第 4 章的“热身训练”,最后关闭类向导(ClassWizard)对话框。请注意在添加菜单选项的消息响应函数时,请确认添加到视图类 CEx19Doc 中。在类向导对话框右上角的类名(Class Name)栏中需要选中视图类 CEx19Doc。(13)按照第 4 章实例 13 中介绍的方法给文档类 CEx19Doc 添加 BOOL 型成员变量m_OperateType,以确定操作类型。(14)将 Workspace 窗口切换至类查看(ClassView)选项卡,展开文档类 CEx19Doc 的成员列表。在列表中双击显示构造函数 CEx19Doc,在其中添加成员变量初始化语句。代码如下:CEx19Doc:CEx19Doc()/ TODO: add one-time construction code herem_OperateType=FALSE;请注意粗体字部分是需要读者输入的代码或者需要修改的代码,而非粗体字部分是 VC+ 6.0自动生成的代码,以便于读者准确定位。(15)在类查看(ClassView)选项卡中,双击“绘制奥运五环”菜单选项的消息响应函数Object IDs Messages 消息(Messages)的描述 函数名ID_MENUITEM_PAINT COMMAND 选择该菜单 OnMenuitemPaintID_MENUITEM_CLEAR COMMAND 选择该菜单 OnMenuitemClearnMenuItemPaint,在右边的窗格中修改该函数,实现绘图功能。代码如下:void CEx19Doc:OnMenuitemPaint()/ TODO: Add your command handler code here/通知视图绘制图案m_OperateType=TRUE;UpdateAllViews(NULL);代码解析文档类 CDocument 的成员函数 UpdateAllViews 通知视图更新显示。一般情况下把数据处理都放入文档类中,而把结果显示放入视图类中。文档类通过 UpdateAllViews 通知视图更新显示。视图类通过 GetDocument 函数获取当前运行的文档类对象指针,然后通过该指针访问文档类的数据处理结果,并根据这些结果进行显示。本例中文档类的数据操作就是修改m_OperateType 的值。(16)修改“清除图案”菜单选项的消息相应函数 OnMenuitemClear,通知视图清除图案。代码如下:void CEx19Doc:OnMenuitemClear()/ TODO: Add your command handler code here/通知视图清楚图案m_OperateType=FALSE;UpdateAllViews(NULL);4. 在视图类 CEx19View 的 OnDraw 函数中实现绘图操作在需要刷新视图时,应用程序都会调用视图类的 OnDraw 函数,一般情况下应该把所有的绘图操作放在这个函数中。OnDraw 函数由应用程序向导自动生成,在修改前代码如下:void CEx19View:OnDraw(CDC* pDC)CEx19Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here通过 GetDocument 函数可以获取当前文档类对象的指针,而下面的 ASSERT_VALID 宏则是测试获取指针的有效性。前面已经反复强调过应尽量把数据操作放在文档类中,而把显示操作放在视图类中,两类之间通过 UpdateAllViews 函数和 GetDocumet 函数传递信息。(17)在类查看(ClassView)选项卡中展开视图类 CEx19View 的成员列表。在列表中双击显示绘图函数 OnDraw。(18)先在 OnDraw 函数中定义画笔,并获取当前窗口的有效范围。代码如下:/ TODO: add draw code for native data hereCRect rect;CBrush WhiteBrush;CBrush RedBrush;CBrush GreenBrush;CBrush BlueBrush;CBrush BlackBrush;CBrush YellowBrush;WhiteBrush.CreateSolidBrush(RGB(255,255,255);RedBrush.CreateSolidBrush(RGB(255,0,0);GreenBrush.CreateSolidBrush(RGB(0,255,0);BlueBrush.CreateSolidBrush(RGB(0,0,255);BlackBrush.CreateSolidBrush(RGB(0,0,0);YellowBrush.CreateSolidBrush(RGB(255,255,0);GetClientRect(&rect);(19)然后实现根据 CEx19Doc 对 m_OperateType 的操作结果进行显示的功能。代码如下:if(pDoc-m_OperateType)pDC-SelectObject(BlueBrush);/绘制蓝色环pDC-Ellipse(50,50,100,100);pDC-SelectObject(WhiteBrush);pDC-Ellipse(54,54,96,96);pDC-SelectObject(YellowBrush);/绘制黄色环pDC-Ellipse(76,75,126,125);pDC-SelectObject(WhiteBrush);pDC-Ellipse(80,79,122,121);pDC-SelectObject(BlackBrush);/绘制黑色环pDC-Ellipse(104,50,154,100);pDC-SelectObject(WhiteBrush);pDC-Ellipse(108,54,150,96);pDC-SelectObject(GreenBrush);/绘制绿色环pDC-Ellipse(130,75,180,125);pDC-SelectObject(WhiteBrush);pDC-Ellipse(134,79,176,121);pDC-SelectObject(RedBrush);/绘制红色环pDC-Ellipse(158,50,208,100);pDC-SelectObject(WhiteBrush);pDC-Ellipse(162,54,204,96);pDC-TextOut(130,190,支持奥运事业!);/在指定坐标输出文字elsepDC-SelectObject(WhiteBrush);/将整个视图涂成白色,清除图案pDC-FillRect(&rect,&WhiteBrush);代码解析CDC 的成员函数无法直接实现环形绘制。在本例中先绘制一个大的圆形,然后将圆形内部涂成背景色白色,以实现环的效果。(20)在 OnDraw 函数的最后,销毁画刷,以释放系统资源。WhiteBrush.DeleteObject();RedBrush.DeleteObject();GreenBru

温馨提示

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

评论

0/150

提交评论