小型绘图系统课程设计

合集下载

cad简易课程设计

cad简易课程设计

cad简易课程设计一、教学目标本课程旨在通过CAD(计算机辅助设计)的基础知识教学,让学生掌握CAD 的基本操作技能,能够使用CAD软件进行简单的二维绘图和三维设计。

通过本课程的学习,学生将能够:1.理解CAD的概念及其在工程设计中的应用。

2.掌握CAD软件的基本界面和操作命令。

3.学习基本的二维绘图和三维建模技巧。

4.能够独立操作CAD软件,进行基本的设计绘图。

5.能够运用CAD软件进行简单的尺寸标注和文字说明。

6.能够利用CAD软件进行基本的三维建模和渲染。

情感态度价值观目标:1.培养学生的创新意识和设计思维。

2.培养学生对新技术的兴趣和好奇心,提高学生的信息素养。

3.培养学生团队协作和沟通交流的能力。

二、教学内容本课程的教学内容主要包括CAD的概念介绍、CAD软件的基本操作、二维绘图技巧、三维建模方法等。

具体的教学大纲如下:1.第一章:CAD概述–CAD的概念及其发展历程。

–CAD软件的应用领域和基本组成。

2.第二章:CAD软件操作基础–CAD软件的基本界面和操作命令。

–视图控制、图层管理和对象选择技巧。

3.第三章:二维绘图技巧–基本绘图命令和编辑命令。

–尺寸标注和文字说明的方法。

4.第四章:三维建模与渲染–三维建模的基本方法和技巧。

–材质、光源和渲染设置。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法、实验法等。

在教学过程中,教师将结合实际案例进行讲解,引导学生进行思考和讨论,同时安排实验课让学生亲手操作CAD软件,提高学生的实践能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《CAD基础教程》2.参考书:《CAD高级技巧》3.多媒体资料:CAD软件操作视频教程、案例分析及演示。

4.实验设备:计算机、CAD软件、打印机等。

五、教学评估本课程的教学评估将采用多元化的评估方式,包括平时表现、作业、考试等,以全面、客观、公正地评价学生的学习成果。

小型绘图系统课程设计代码

小型绘图系统课程设计代码

小型绘图系统课程设计代码一、课程目标知识目标:1. 让学生理解小型绘图系统的基本原理,掌握其核心代码的编写方法。

2. 使学生掌握绘图系统中常用的数据结构,如栈、队列等,并能够运用到实际编程中。

3. 帮助学生掌握绘图系统中基本的图形绘制函数,如画线、画圆等,并能灵活运用。

技能目标:1. 培养学生运用所学知识,独立编写小型绘图系统代码的能力。

2. 培养学生分析问题、解决问题的能力,使其能够针对小型绘图系统中的问题,提出合理的解决方案。

3. 培养学生团队协作能力,能够在小组合作中发挥个人优势,共同完成项目。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣和热情,激发他们主动探索新知识的欲望。

2. 培养学生面对困难和挑战时,保持积极乐观的心态,勇于尝试、不断调整。

3. 培养学生具备良好的编程习惯,注重代码规范,提高代码质量。

本课程旨在让学生通过学习小型绘图系统的原理和代码编写,掌握基本的编程技能,培养他们分析问题、解决问题的能力。

课程性质为实践性较强的学科,结合学生年级特点,注重培养他们的动手能力和团队协作能力。

在教学过程中,教师需关注学生的个体差异,提供有针对性的指导,确保学生能够达到预设的课程目标。

通过本课程的学习,学生将能够独立完成小型绘图系统的代码编写,并在实践中不断提高自己的编程技能。

二、教学内容1. 小型绘图系统基本原理:介绍绘图系统的组成、工作原理以及坐标系统。

2. 数据结构:讲解栈、队列等在绘图系统中的应用,分析其优缺点。

3. 图形绘制函数:学习画线、画圆、画矩形等基本图形绘制函数的原理和实现方法。

4. 编程语言基础:回顾与小型绘图系统相关的基本语法,如变量定义、循环、条件语句等。

5. 小型绘图系统代码编写:根据教学大纲,分阶段完成小型绘图系统的代码编写。

- 阶段一:搭建基本框架,实现坐标转换功能。

- 阶段二:编写图形绘制函数,实现基本图形的绘制。

- 阶段三:整合代码,完善小型绘图系统功能,并进行调试优化。

小型绘图系统课程设计

小型绘图系统课程设计

1设计目的设计一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Draw。

此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、连续线的绘制。

并且能实现绘图的控制,包括线宽、线型和颜色的设置,图形的保存和打开的使用。

2 总体设计设计图如图63详细设计首先,新建一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。

为此程序添加一个子菜单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。

当用户选择其中的一个菜单项后,程序将按照当前的选择进行相应图形的绘制。

添加的六个菜单项的ID及名称如表1所示。

然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,这六个响应函数的名称分别如表1所示。

在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。

因此在CDrawView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述:private: UINT m_nDrawType;接着,在视类的构造函数中将此变量初始化为0,程序代码如下:CDrawView::CDrawView(){// TODO: add construction code herem_nDrawType=0;}利用switch/case语句,来分别完成相应图形的绘制。

当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值。

程序代码如下:void CDrawView::OnDot(){// TODO: Add your command handler code herem_nDrawType=1;}void CDrawView::OnEllipse(){// TODO: Add your command handler code herem_nDrawType=4;}void CDrawView::OnLine(){// TODO: Add your command handler code herem_nDrawType=2;}void CDrawView::OnRectangle(){// TODO: Add your command handler code herem_nDrawType=3;}3.1点、直线、矩形、椭圆,画笔绘制对于直线、矩形和椭圆,在绘制时都可有两点来确定其图形。

小型绘图系统课程设计

小型绘图系统课程设计

小型绘图系统课程设计目录一.系统功能设计功能说明:实现基本图元(直线、圆、多边形、曲线)的绘制;功能要求:1)使用静态切分视图,将屏幕切分为左右窗格。

左窗格是控制窗格,右窗格为显示窗格。

2)使用橡皮筋技术动态演示基本图元的绘制过程。

3)基本图元的数据(几何数据和属性数据)可以交互进行输入和修改。

4)可以对二维图形进行颜色填充操作。

5)使用填充算法结合基本图形生成算法绘制下面的图形二.详细设计关于视图是直接基于mfc单文档制作,未能实现静态分切视图功能,实现在视图上部添加控制窗格和控制按钮,视图区用以绘图显示。

详细设计如图所示。

动态演示基本图元的绘制过程:动态演示图元绘制需要添加鼠标响应事件来设置,我的设计思路是这样的,以直线、矩形、圆为例。

首先添加一个鼠标左键单击事件voidCJjyyView::OnLButtonDown(UINT nFlags, CPoint point)在视图类上方定义BOOL型变量m_startRect,设置为确认左键单击可以开始画图元,定义HCURSOR m_HCross,初始化光标为十字型光标,然后用CPoint定义三个过程中需要用到的点:m_ptOrigin;m_OldPoint;m_startPoint;此时把UINT m_ndrawtype;同时定义用以判断画的是什么图形。

定义完后再视图类中CJjyyView::CJjyyView()初始化函数:m_startPoint=0;m_startRect=FALSE;m_ndrawtype=0;m_HCross=AfxGetApp()->LoadStandardCursor(IDC_CROSS);完成后再buttondown中添加关键代码:void CJjyyView::OnLButtonDown(UINT nFlags, CPoint point) { CView::OnLButtonDown(nFlags, point);m_startRect=TRUE;//鼠标左键单击,设置可以开始绘制图形m_startPoint=point; //记录起始点m_OldPoint=point;//设置老点也为起始点::SetCursor(m_HCross);m_ptOrigin = point;这样左键单击的响应事件就暂时设定终了,随后需要用到buttonup的响应事件来画出图形,使用Ctrl+W也就是mfc classwizard添加鼠标松开的响应,首先添加两行代码重置绘制标志m_startRect=FALSE;//重置绘制标志::ClipCursor(NULL);//解锁光标,即将光标恢复为默认光标然后添加获取设备句柄函数CClientDC dc(this);然后用dc.SelectStockObject(NULL_BRUSH);设置画刷为空画刷。

简单画图程序课程设计报告

简单画图程序课程设计报告

简单画图程序1 基本功能描述1) 在单文档菜单中,在菜单行中可插入一个菜单项,命名为绘图,在下拉菜单中可分别设置绘制的图形形状,如直线、矩形及椭圆,随手画选项,有1-5可供选择,按默认的画笔,画刷来绘制选择的图形。

2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,当鼠标弹起,此图形则绘制完毕。

2 设计思路1) 对需要用到的变量进行初始化。

2) 选择相应的图形之后就响应相应的消息处理函数。

选择不同的线宽,即可改变画笔的属性。

3) 鼠标的按下响应函数OnLButtonDown(),捕捉鼠标当前位置得到起点的坐标,鼠标的拖动响函数OnMouseMove()改变终点的坐标,鼠标的弹起响应OnLButtonUp(),确定终点坐标,刷新,得到绘制图形。

4) 选择图形或其它属性,可进行下一次绘制。

3 软件设计3.1 设计步骤1)创建单文档创建一个MFC AppWizard[exe]工程,命名为“draw”,,并创建单文档。

创建成功后,系统自动生成相应的类。

2)编辑菜单添加需要的菜单项,并在菜单的属性中设定好所对应的ID,(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可)。

建立类向导,在视图类CdrawView中,对各菜单项添加对应的COMMAND消息处理函数,部分菜单项还添加对应的UPDATE_COMMAND_UI消息函数,。

建立类向导在插入处选择资源,新建工具栏,在工具栏上添加相应的按钮,在属性处更改其ID,4)在相应消息函数处添加代码,实现其功能建立类向导,在视图类CdrawView中,添加WM_PAINT消息,以及WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE消息,并在其中添加相应的代码。

3.3 关键功能实现1)选择要绘制的图形在直线、矩形以及椭圆的消息处理函数里为shape分别赋值为1,2,3,在OnPaint()函数里添加3个if语句的代码来这实现这三个图形的绘制:当选择画直线时,shape=1,则执行绘制直线代码,当选择画矩形时,shape=2,则执行绘制矩形的代码,当性选择画椭圆时,shape=3,则执行绘制椭圆的代码。

画图微课程设计方案

画图微课程设计方案

画图微课程设计方案一、教学目标本课程的教学目标是让学生掌握画图的基本技巧,包括线条、形状、颜色等基础知识,能够运用画图软件进行简单的创作和设计。

在技能方面,学生应能够熟练操作画图软件,进行绘图、编辑、组合等操作。

在情感态度价值观方面,学生应能够体验到画图的乐趣,培养对艺术创作的热情和自信心。

二、教学内容本课程的教学内容主要包括画图软件的基本操作、线条和形状的绘制技巧、颜色的选择和搭配、以及简单的创作和设计。

具体包括以下几个部分:1.画图软件的基本操作:打开和关闭文件、保存和导出作品、调整画布大小等。

2.线条和形状的绘制技巧:直线、曲线、矩形、圆形等基本线条和形状的绘制方法。

3.颜色的选择和搭配:颜色的基本概念、颜色的选择工具、颜色的搭配原则等。

4.简单的创作和设计:运用基本线条和形状进行创作,如绘制简单的图形、设计标志等。

三、教学方法本课程的教学方法包括讲授法、示范法、练习法和小组讨论法。

首先,教师通过讲授法向学生介绍画图软件的基本操作和基本概念。

然后,通过示范法向学生展示线条和形状的绘制技巧,以及颜色的选择和搭配方法。

接着,学生通过练习法进行实际操作,巩固所学知识。

最后,通过小组讨论法,学生可以相互交流和分享作品,激发创作灵感。

四、教学资源本课程的教学资源包括教材、多媒体资料和实验设备。

教材主要包括画图软件的操作手册和创作指南,为学生提供系统的学习资料。

多媒体资料包括在线教程、视频演示和优秀作品展示,帮助学生更直观地理解和学习。

实验设备包括计算机和画图软件,为学生提供实际操作的平台。

此外,还可以利用投影仪和白板等设备进行教学展示和互动。

五、教学评估本课程的评估方式包括平时表现、作业和考试。

平时表现主要评估学生在课堂上的参与程度、合作态度和创作能力。

作业包括课堂练习和课后作业,评估学生对知识的掌握和应用能力。

考试包括期中考试和期末考试,评估学生对课程内容的整体理解和综合运用能力。

评估方式应客观、公正,能够全面反映学生的学习成果。

简单画图程序课程设计

简单画图程序 课程设计一、课程目标知识目标:1. 学生能够理解简单画图程序的基本概念和原理,掌握画图程序的基本操作。

2. 学生能够描述并运用画图程序中的绘图工具和功能,如线条、图形、颜色填充等。

3. 学生能够掌握画图程序中的图层概念,并运用图层进行作品的创作。

技能目标:1. 学生能够运用画图程序独立创作简单的图形作品,展示自己的创意和想象力。

2. 学生能够熟练使用画图程序的绘图工具,进行基本的绘图操作和编辑功能。

3. 学生能够通过画图程序的实践操作,培养观察力、空间思维能力和动手能力。

情感态度价值观目标:1. 学生对画图程序产生兴趣,积极参与课程学习,主动探索和创作。

2. 学生在创作过程中,培养自信心和耐心,学会坚持和克服困难。

3. 学生能够与他人分享自己的作品,学会欣赏和尊重他人的创作,培养团队合作意识和审美观念。

课程性质:本课程为信息技术课程,结合画图程序的实用性和趣味性,旨在培养学生的计算机操作能力和创造力。

学生特点:学生处于小学高年级阶段,对计算机操作有一定的基础,好奇心强,喜欢动手实践。

教学要求:课程设计要注重理论与实践相结合,以学生为主体,教师引导和辅导,鼓励学生主动探索和创作,培养其信息技术素养和创新能力。

通过具体的学习成果评估,确保课程目标的达成。

二、教学内容1. 画图程序基础知识:- 介绍画图程序的概念和作用。

- 学习画图程序的操作界面和工具栏。

2. 绘图工具的使用:- 线条工具:学习如何绘制直线、曲线等。

- 形状工具:掌握绘制矩形、圆形、三角形等基本图形的方法。

- 颜色填充工具:学习如何为图形填充颜色。

3. 图层管理:- 了解图层概念,学习图层的添加、删除和调整顺序。

- 掌握图层透明度和锁定功能的使用。

4. 作品创作:- 创作简单的图形作品,如卡通人物、风景等。

- 结合所学工具和功能,进行创意作品的绘制。

5. 教学大纲安排:- 第一课时:画图程序基础知识,认识操作界面和工具栏。

电脑绘图培训课程设计

电脑绘图培训课程设计一、课程目标知识目标:1. 学生能够理解电脑绘图的基本概念,掌握绘图软件的基本操作。

2. 学生能够掌握并运用绘图工具和功能,如选择、移动、缩放、旋转等。

3. 学生能够了解并运用图层、颜色、线条、形状等基本元素进行创作。

技能目标:1. 学生能够熟练使用绘图软件,运用各种工具和功能完成创意绘图作品。

2. 学生能够运用绘图技巧表达自己的思想、情感和创意。

3. 学生能够通过电脑绘图解决实际问题,提高观察、分析和创新能力。

情感态度价值观目标:1. 培养学生对电脑绘图的兴趣和爱好,激发创作热情。

2. 培养学生勇于尝试、积极探索的学习态度,提高自信心。

3. 培养学生团队协作意识,学会与他人分享、交流创作经验和成果。

4. 培养学生遵守网络道德规范,尊重他人作品,养成良好的知识产权意识。

课程性质:本课程为实践性较强的学科,注重培养学生的动手能力和创新能力。

学生特点:学生具备一定的电脑操作基础,对绘图有兴趣,年龄特点为好奇心强、求知欲旺。

教学要求:结合课本内容,以学生为主体,注重实践操作,鼓励创新思维,提高综合素质。

通过本课程的学习,使学生能够将所学知识应用于实际生活,提高电脑绘图技能。

二、教学内容1. 绘图软件的认识与操作:- 软件界面及功能介绍- 常用工具的使用方法(如选择、移动、缩放、旋转等)- 图层、颜色、线条、形状等基本元素的设置与调整2. 基本绘图技巧:- 简单图形的绘制与编辑- 复杂图形的组合与变换- 颜色填充、渐变及纹理的运用3. 创意绘图实践:- 创意构思与草图绘制- 运用绘图技巧完成创意作品- 作品展示与评价4. 电脑绘图在实际应用:- 卡片设计、海报制作、插画创作等- 结合课程主题进行项目实践- 分析并解决实际绘图过程中遇到的问题教学内容安排与进度:第一课时:绘图软件的认识与基本操作第二课时:基本绘图技巧的学习与实践第三课时:创意绘图实践与作品展示第四课时:电脑绘图在实际应用及项目实践教学内容与课本关联性:本教学内容以课本为基础,结合课程目标,对绘图软件的操作、绘图技巧、创意实践等方面进行深入讲解和实际操作,使学生在掌握基础知识的同时,提高创新能力和实际应用能力。

插画手绘系统课程设计

插画手绘系统课程设计一、课程目标知识目标:1. 学生能理解并掌握插画手绘的基本概念、分类及历史发展。

2. 学生能掌握并运用线条、色彩、构图等基本技法,创作具有个性和创意的插画作品。

3. 学生能了解并学习不同风格的插画作品,拓展审美视野。

技能目标:1. 学生能运用绘画工具,如铅笔、水彩、马克笔等,进行插画创作。

2. 学生能通过观察、想象、实践等途径,提高绘画表现力和创造力。

3. 学生能运用所学知识,独立完成插画作品的构思、草图、正稿等全过程。

情感态度价值观目标:1. 学生对插画艺术产生兴趣,树立正确的审美观念,培养良好的审美情趣。

2. 学生在创作过程中,培养耐心、细致、勇于创新的精神品质。

3. 学生通过团队协作,学会相互欣赏、借鉴、交流,提高人际沟通能力。

本课程针对初中生,结合学科特点,注重培养学生的动手能力、观察力和创造力。

课程设计充分考虑学生年龄特点,以激发兴趣、培养技能、提升素养为核心,旨在使学生在轻松愉快的氛围中学习插画手绘,提高综合素质。

通过本课程的学习,使学生能够在知识、技能和情感态度价值观方面取得具体的学习成果。

二、教学内容1. 插画手绘基本概念与分类:介绍插画的基本概念、功能、分类及历史发展,使学生了解插画艺术的多元性。

- 教材章节:第一章 插画艺术概述2. 绘画工具与材料:讲解并演示各类绘画工具和材料的特点、用途,指导学生正确选择和使用。

- 教材章节:第二章 绘画工具与材料3. 线条与构图:教授线条的表现力和构图原则,训练学生运用线条和构图创作插画。

- 教材章节:第三章 线条与构图4. 色彩知识与运用:介绍色彩基础知识,指导学生运用色彩表现情感和氛围。

- 教材章节:第四章 色彩知识与运用5. 插画创作技巧:讲解并实践人物、动物、景物等不同主题的插画创作技巧。

- 教材章节:第五章 插画创作技巧6. 插画作品分析与创作:分析不同风格和主题的插画作品,指导学生进行独立创作。

- 教材章节:第六章 插画作品分析与创作7. 团队协作与展示:组织学生进行团队协作,共同完成插画作品,并进行展示和评价。

简单画图程序课程设计说明书

目录1基本功能描述..................................................................................................................... - 1 -2设计思路............................................................................................................................. - 1 -3软件设计............................................................................................................................. - 3 -3.1设计步骤 .................................................................................................................. - 3 -3.2界面设计 .................................................................................................................. - 6 -3.3关键功能的实现 ...................................................................................................... - 6 -4结论与心得体会................................................................................................................. - 8 -5参考文献........................................................................................................................... - 10 -6思考题............................................................................................................................... - 10 -7附录................................................................................................................................... - 11 -7.1调试报告 ................................................................................................................ - 11 -7.2测试结果 ................................................................................................................ - 12 -7.3关键源代码 ............................................................................................................ - 14 -简单画图程序1基本功能描述简单画图程序实现了常见图形的绘制、图形属性的设置和图形数据的暂存等功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录一.系统功能设计功能说明:实现基本图元(直线、圆、多边形、曲线)的绘制;功能要求:1)使用静态切分视图,将屏幕切分为左右窗格。

左窗格是控制窗格,右窗格为显示窗格。

2)使用橡皮筋技术动态演示基本图元的绘制过程。

3)基本图元的数据(几何数据和属性数据)可以交互进行输入和修改。

4)可以对二维图形进行颜色填充操作。

5)使用填充算法结合基本图形生成算法绘制下面的图形二.详细设计关于视图是直接基于mfc单文档制作,未能实现静态分切视图功能,实现在视图上部添加控制窗格和控制按钮,视图区用以绘图显示。

详细设计如图所示。

动态演示基本图元的绘制过程:动态演示图元绘制需要添加鼠标响应事件来设置,我的设计思路是这样的,以直线、矩形、圆为例。

首先添加一个鼠标左键单击事件voidCJjyyView::OnLButtonDown(UINT nFlags, CPoint point)在视图类上方定义BOOL型变量m_startRect,设置为确认左键单击可以开始画图元,定义HCURSOR m_HCross,初始化光标为十字型光标,然后用CPoint定义三个过程中需要用到的点:m_ptOrigin;m_OldPoint;m_startPoint;此时把UINT m_ndrawtype;同时定义用以判断画的是什么图形。

定义完后再视图类中CJjyyView::CJjyyView()初始化函数:m_startPoint=0;m_startRect=FALSE;m_ndrawtype=0;m_HCross=AfxGetApp()->LoadStandardCursor(IDC_CROSS);完成后再buttondown中添加关键代码:void CJjyyView::OnLButtonDown(UINT nFlags, CPoint point){ CView::OnLButtonDown(nFlags, point);m_startRect=TRUE;//鼠标左键单击,设置可以开始绘制图形m_startPoint=point; //记录起始点m_OldPoint=point;//设置老点也为起始点::SetCursor(m_HCross);m_ptOrigin = point;这样左键单击的响应事件就暂时设定终了,随后需要用到buttonup的响应事件来画出图形,使用Ctrl+W也就是mfc classwizard添加鼠标松开的响应,首先添加两行代码重置绘制标志m_startRect=FALSE;//重置绘制标志::ClipCursor(NULL);//解锁光标,即将光标恢复为默认光标然后添加获取设备句柄函数CClientDC dc(this);然后用dc.SelectStockObject(NULL_BRUSH);设置画刷为空画刷。

接下来使用一个switch(m_ndrawtype)来判别选择画哪一种图形,首先case1就设置为画直线:添加画直线代码:dc.MoveTo(m_startPoint);dc.LineTo(m_OldPoint); 这两句是擦去MouseMove消息响应中绘制的最后一次临时线,然后输入dc.MoveTo(m_startPoint);dc.LineTo(point);绘制固定线。

Break结束。

接下来case2即是加入画矩形的代码:dc.Rectangle(CRect(m_startPoint,m_OldPoint));dc.Rectangle(CRect(m_startPoint,point));画圆也是依次类推,过程中都是直接调用了vc中现有的函数用以绘制图形,所以这几部很简单就做好了。

画圆的代码为:dc.Ellipse(CRect(m_startPoint,m_OldPoint));dc.Ellipse(CRect(m_startPoint,point));用以上方法在有算法和可选函数的情况下基本都能画出想要的图元了,然而这样的绘制方法并不能让人在画图的时候看到临时线而判断画出的是不是想要的图形,这样就要用到mousemove消息响应机制。

添加了mousemove类后在其中加入代码:CDC *pDC=GetDC();::SetCursor(m_HCross);CClientDC dc(this);dc.SetROP2(R2_NOT);dc.SetROP2(R2_NOT);此处用两次取反来实现临时线的绘制和擦去,然后这里和bottonup中需要设置一个同样的switch()来判定所画图形,但不同的是在循环前要加入一个if(TRUE==m_startRect),根据是否有单击判定是否可以画图形,用直线做实例:case 1://LINE::SetCursor(m_HCross);//擦去上一次绘制的临时线dc.MoveTo(m_startPoint);dc.LineTo(m_OldPoint);//绘制这一次的临时线dc.MoveTo(m_startPoint);dc.LineTo(point);//将临时线的终点复制给m_OldPoint,//使其在消息循环的过程中将该值传递到//擦去上一次画线的过程中,以便擦去上一次所画的线 m_OldPoint=point;break;仿照直线实例即可完成其他基本图元的临时线型绘制,令使用者更直观的了解所画出来的图形,然后松开左键绘制固定图元线。

直线、矩形、圆实现后开始做困难一些的多边形和曲线的实现:我的思路是通过鼠标点击的点存储入数组中,用确定点相连来确定多边形的相应边绘制多边形,曲线也是通过确定点来确定曲线的控制多边形然后绘制出曲线。

在左键单击响应中也添加相应case来存储点的坐标并绘制出一个点再视区中:CDC*pDC=GetDC();x[i]=point.x;y[i]=point.y;pDC->SetPixel(point.x-1,point.y-1,RGB(0,0,0));pDC->SetPixel(point.x-1,point.y,RGB(0,0,0));pDC->SetPixel(point.x-1,point.y+1,RGB(0,0,0));pDC->SetPixel(point.x,point.y-1,RGB(0,0,0));pDC->SetPixel(point.x,point.y,RGB(0,0,0));pDC->SetPixel(point.x,point.y+1,RGB(0,0,0));pDC->SetPixel(point.x+1,point.y+1,RGB(0,0,0));pDC->SetPixel(point.x+1,point.y+1,RGB(0,0,0));pDC->SetPixel(point.x+1,point.y+1,RGB(0,0,0));然后我添加一个右键单击响应事件用以逐点连线绘制多边形和曲线。

此处我设定一个BOOL变量m_bDraw来确定右键是否单击,然后用与bottondown 相同的case来保证调用时不出误差,本人特别钟爱使用switch循环,因为不易出错,可以重复使用:代码如下:void CJjyyView::OnRButtonDown(UINT nFlags, CPoint point){ m_bDraw=TRUE;switch(m_ndrawtype){case 6:{if(m_bDraw){CDC *pDC=GetDC();pDC->MoveTo(x[0],y[0]);for(int j=1;j<i;j++)pDC->LineTo(x[j],y[j]);pDC->LineTo(x[0],y[0]);}}// TODO: Add your message handler code here and/or call default i=0;}此处i=0是消除数组中储存的点,避免重复连线和连线错误。

这是绘制多边形方法。

绘制曲线的方法是用了所学知识中N次比赛尔曲线的画法绘制,代码如下:{CDC*pDC=GetDC();x[i]=point.x;y[i]=point.y;i++;if(pDC->GetPixel(point.x,point.y)==RGB(255,255,255)){pDC->SetPixel(point.x-1,point.y-1,RGB(0,0,0));pDC->SetPixel(point.x-1,point.y,RGB(0,0,0));pDC->SetPixel(point.x-1,point.y+1,RGB(0,0,0));pDC->SetPixel(point.x,point.y-1,RGB(0,0,0));pDC->SetPixel(point.x,point.y,RGB(0,0,0));pDC->SetPixel(point.x,point.y+1,RGB(0,0,0));pDC->SetPixel(point.x+1,point.y+1,RGB(0,0,0));pDC->SetPixel(point.x+1,point.y+1,RGB(0,0,0));pDC->SetPixel(point.x+1,point.y+1,RGB(0,0,0));}}bz3=false;break;其中bz3变量是为了防止误点两次右键时会使曲线第一点连出一条新的直线至原点而添加的。

然后绘制曲线switch(m_ndrawtype){case 7:{if(m_bDraw)if(bz3==false){CDC *pDC=GetDC();float t,xx,yy;float bb;int n=i-1;pDC->MoveTo(x[0],y[0]);for(t=0.05;t<1.00001;t=t+0.05)xx=0;yy=0;for(i=0;i<=n;i++){bb=b(i,n,t);xx=xx+x[i]*bb;yy=yy+y[i]*bb;}pDC->LineTo(int(xx),int(yy));}}}// TODO: Add your message handler code here and/or call default i=0;bz3=true;}此处应在恰当位置先行定义n次曲线需要用到的函数float b(int i,int n,float t){int k,a=1,b=1;for(k=i+1;k<=n;k++) a=a*k;for(k=1;k<=n-i;k++) b=b*k;float bh=(float)a/b;for(k=1;k<=i;k++) bh=bh*t;for(k=1;k<=n-i;k++) bh=bh*(1-t);return bh;}至此,所需图元都可以实现动态绘制。

相关文档
最新文档