《计算机图形学》课程设计报告——点阵字符_第1页
《计算机图形学》课程设计报告——点阵字符_第2页
《计算机图形学》课程设计报告——点阵字符_第3页
《计算机图形学》课程设计报告——点阵字符_第4页
《计算机图形学》课程设计报告——点阵字符_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、 课程设计报告 课程设计题目:交互实现点阵字符生成及旋转 专 业: 计算机科学与技术班 级: 1120702姓 名: 邱望学 号: 201120070218指导教师: 桂颖,陆玲 2014年 06月 05日 目录摘要3一、 课程设计目的3二、 课程设计描述及要求3三、 系统开发环境3四、 需求分析4五、 总体设计4六、 详细设计4七、 设计结果11八、 总结13九、 参考资料13 摘要本文主要描述了计算机图形学中,运用C+和MFC来实现的建立单文档以及对话框,实现交互生成和旋转点阵字符的功能。其中简单的用LButtonDown,LButtonUp等函数实现了用鼠标控制其位置和拖动鼠标实现任意角

2、度旋转,点阵字符则是通过pDC_>SetPixel()打点的方式绘制。关键字:点阵字符,鼠标控制,旋转1、 课程设计目的 1、 熟练掌握VC+的开发环境,会运用MFC建立工程,并运用其中的各种工具实现一些图形处理的功能。2、 掌握点阵字符的原理。3、 掌握图形旋转的原理。4、 会运用鼠标实现交互。2、 课程设计描述及要求1、 实现交互生成点阵字符,使其能够在任意位置显示。2、 实现交互旋转点阵字符,使其能够随着鼠标拖动进行旋转。3、 系统开发环境开发工具:Microsoft Visual C+ 6.0 开发平台: MFC平台 操

3、作系统:Microsoft Windows7编程语系:C语言语系4、 需求分析 该软件需要建立单文档,在其菜单栏添加生成字符和旋转字符的按钮,设计对话框,分别实现交互生成点阵字符和交互旋转点阵字符。 5、 总体设计 运用MFC设计对话框,为其添加各种控件并建立类向导。点阵字符则是在一个32*32的区域能通过pDC->SetPixel(int x,int y,RGB()函数打点显示。交互则是使用添加LButtonDown()和LButtonUp()鼠标控制函数进行坐标的变换来实现。另外添加编辑框获取鼠标当前位置,并显示出其x、y的坐标。6、 详细设计1、 单文档设计(1) 进入V

4、isual C+ 6.0 集成开发环境后,选择“文件|新建”菜单,弹出“新建”对话框。单击“ 工程” 标签, 打开其选项卡, 在其左边的列表框中选择MFCAppWizard(EXE)工程类型,在“工程名称”文本框输入工程名,在“位置”中选择工程路径(如选择“C:”),则在“C:”下建立一个新的以工程名命名的目录。如果是第一个工程文件,则必须创建一个新的工作区,选择“创建新的工作空间”,在“平台”编辑框中选择“Win32”,如图1所示 图1 新建工程对话框 (2) 单击“确定”按钮后,显示“MFC 应用程序向导-步骤1”对话框,选择“单文档”选项,如图2所示。 图2 “MFC 应用程序向导-步骤

5、1”对话框(3) 单击“完成”按钮,系统弹出如图 所示“新建工程信息”对话框。(4) 单击“确定”按钮后,就完成了应用程序的自动生成,在指定的目录下生成了应用程序框架所必需的全部文件,并且可以直接运行,如图3所示。 图 3 应用程序界面(5) 选择“组建|执行”,运行结果如图 4。 图 4 程序运行界面2、 点阵字符生成设计 (1)设计生成字符对话框,在其面板上添加按钮,编辑框等控件,如图5所示。 图5 生成字符对话框 (2)建立类向导,添加LButtonDown()函数,用x0、y0存储鼠标获取的位置。其代码如下:void CCreat:OnLButtonDown(UINT nFlags,

6、CPoint point) Invalidate();CDialog:OnLButtonDown(nFlags, point);x0=point.x;y0=point.y;m_xx=x0;UpdateData(false);m_yy=y0;UpdateData(false); (3)显示x、y坐标的编辑框分别为Edit1和Edit2,其成员变量分别为m_xx和m_yy。其代码如下:void CCreat:OnChangeEdit1() UpdateData(false);void CCreat:OnChangeEdit2() UpdateData(false); (4)添加“确定”按钮的函数,

7、其ID为Button1,显示点阵字符。其代码如下:void CCreat:OnButton1() CDC *pDC=GetDC();int d;int r32=0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FFFFF00,0x0FFFFF00,0x0FFFFF00,0x0FFFFF00,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,

8、0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0x00000000,0x00000000,0x00000000,0x00000000;for(int y=0;y<32;y+)for(int x=0;x<32;x+)d=1<<(32-x);if(ry&d)=d)pDC->SetPixel(x+x0,y+y0,RGB(255,0,0); (5)添加“退出”按钮。3、 点阵字符旋转设计 (1)设计“字符旋转”对话框,在其面板上添加按钮

9、,编辑框等控件,如图6所示。 图6 字符旋转对话框 (2)建立类向导,添加LButtonDown()函数,用n1、m1存储鼠标按下的位置。其代码如下:void Cspin:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultInvalidate();CDialog:OnLButtonDown(nFlags, point);if(count=0)m=point.x;n=point.y;m_xx=n;UpdateData(false);m_yy=

10、m;UpdateData(false);n1=point.x; m1=point.y; count+; (3)建立类向导,添加LButtonUp()函数,用n2、m2存储鼠标松开的位置,鼠标松开之后清屏,计算旋转角度的三角函数值,再进行旋转变换。其代码如下:void Cspin:OnLButtonUp(UINT nFlags, CPoint point) CDialog:OnLButtonUp(nFlags, point);n2=point.x;m2=point.y;xcenter=n+16; /字符中心点位置ycenter=m+16; si1=(n1-xcenter)/sqrt(n1-xce

11、nter)*(n1-xcenter)+(m1-ycenter)*(m1-ycenter);si2=(n2-xcenter)/sqrt(n2-xcenter)*(n2-xcenter)+(m2-ycenter)*(m2-ycenter);co1=(m1-ycenter)/sqrt(n1-xcenter)*(n1-xcenter)+(m1-ycenter)*(m1-ycenter);co2=(m2-ycenter)/sqrt(n2-xcenter)*(n2-xcenter)+(m2-ycenter)*(m2-ycenter);si2_1=si1*co2-si2*co1;co2_1=co2*co1+

12、si2*si1;CDC *pDC=GetDC();for(int i=0;i<32*32;i+)p=(ai-xcenter)*co2_1-(bi-ycenter)*si2_1+xcenter;q=(ai-xcenter)*si2_1+(bi-ycenter)*co2_1+ycenter;pDC->SetPixel(p,q,RGB(255,0,0);pDC->SetPixel(p+1,q,RGB(255,0,0);pDC->SetPixel(p,q+1,RGB(255,0,0);pDC->SetPixel(p+1,q+1,RGB(255,0,0); (4)编辑框显示

13、字符生成的位置,两个编辑框的成员变量分别为m_xx、m_yy。void CCreat:OnChangeEdit1() UpdateData(false);void CCreat:OnChangeEdit2() UpdateData(false); (5)添加“确定”按钮代码。void Cspin:OnButton2() if(count=1)CDC *pDC=GetDC();int d;int r32=0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF

14、0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FFFFF00,0x0FFFFF00,0x0FFFFF00,0x0FFFFF00,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0x00000000,0x00000000,0x00000000,0x00000000;int i=0;for(int y=0;y<32;y+)for(int x=0;x&

15、lt;32;x+)d=1<<(32-x);if(ry&d)=d)pDC->SetPixel(x+n,y+m,RGB(255,0,0);ai=x+n;bi=y+m;i+;else NULL; (6)添加“退出”按钮代码。 (7)添加静态问题,提示操作。7、 设计结果1、生成字符 图72、字符旋转 图88、 总结 计算机图形学研究的内容极其广泛如图形硬件、图形标准、图形交互技术、光栅图形算法、曲线曲面建模、实物造型以及计算机动画等等。计算机图形学主要目的就是利用计算机表达真实感图形。经过这学期图形学的学习,我对这门学科产生了兴趣。   这次设计计算机图形学基础的图形处理系统,我用的是VC+中的MFC,这使我对使用VC+中的MFC编程有了巨大的提高,以前学可视化编程时只是初步了解MFC,对它的一些功能并不能做到正确使用,而现在经过进一步的学习我对其中的各种映射机制以及个各类之间的联系有了进一步的认识。而且通过这学期图形学课程的设计,实战演练,不仅复习了MFC的知识,而且让我对计算机图形学的算法与实现有个初步的的认识

温馨提示

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

评论

0/150

提交评论