C++课设:简单画图程序

合集下载

c语言课程设计流程图

c语言课程设计流程图

c语言课程设计流程图一、教学目标本课程旨在通过C语言的学习,让学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,培养学生编程思维和实际编程能力,为学生进一步学习计算机科学和软件工程打下基础。

具体目标如下:1.理解C语言的基本语法和规则。

2.掌握基本数据类型、运算符和控制结构。

3.了解函数的定义和调用。

4.能够使用C语言编写简单的程序。

5.能够调试和运行C语言程序。

6.能够阅读和理解C语言程序。

情感态度价值观目标:1.培养学生对计算机科学的兴趣和热情。

2.培养学生解决问题的能力和创新思维。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。

具体安排如下:1.第一章:C语言概述,介绍C语言的基本概念、特点和应用。

2.第二章:数据类型和运算符,介绍基本数据类型、运算符及其使用。

3.第三章:控制结构,介绍条件语句、循环语句等控制结构的使用。

4.第四章:函数,介绍函数的定义、声明和调用,以及常用的库函数。

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

1.讲授法:通过教师的讲解,让学生掌握C语言的基本知识和概念。

2.讨论法:通过小组讨论,培养学生的合作能力和解决问题的能力。

3.案例分析法:通过分析典型案例,让学生理解C语言的应用和编程思维。

4.实验法:通过编写和调试C语言程序,提高学生的实际编程能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将选择和准备以下教学资源:1.教材:《C程序设计语言》(K&R)2.参考书:《C Primer Plus》(Deitel)3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、编程环境(如Code::Blocks、Visual Studio等)通过以上教学资源的使用,我们将丰富学生的学习体验,提高学生的学习效果。

五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用多种评估方式,包括平时表现、作业、考试等。

C语言实用程序设计100例流程图

C语言实用程序设计100例流程图

C谈话真用步调100例之阳早格格创做第一篇前提取普及真例1利用库函数编写基础隐现步调真例2变量属性真例3运算符取典型真例4闭于步调结构真例5隐现函数直线图真例6二分法选代的应用真例7多变的坐圆体真例8一维整型数组应用(1)真例9一维整型数组应用(2)真例10一维整型数组应用(3)真例11一维整型数组应用(4)真例12二维数组应用(1)——隐现杨辉三角真例13二维数组应用(2)——魔圆阵真例14字符数组应用(1)——逻辑推断真例15字符数组应用(2)——数据模拟真例16二维数组应用——字符比较真例17利用指针举止数据处理真例18指针取字符串真例19利用指针处理二维数组真例20一级指针真例21利用指针传播参数值真例22结构体的应用真例23链表的应用(1)真例24链表的应用(2)真例25链表的应用(3)真例26同用体的应用真例27罗列典型应用真例28位运算购例29义件加稀真例30文献的按记录随机读写第二篇图形取多媒介真例31改变笔墨背景致真例32及本颜色树坐真例33创造表格真例34创造百般的椭圆真例35劣好的透视图形真例36错位窗心真例37能移动的矩形真例38多变的弥补矩形真例39黄乌相间的矩形取圆真例40六叶图案真例41特殊图案真例42国际象棋棋盘真例43创造楼梯真例44使用线典型函数树坐多个汉字真例45乌色群面真例46饼图购例47产品合线图真例48直圆图真例49变大变色的拒形取国真例50多变的弥补多边形真例51流星球真例52小球动向碰碰购倒53多,直线真例54多变的圆取环真例55柔好的球体真例56疏通的小车真例57统计动画消得次数真例58运止的时钟真例59直降飞机真例60演绎“死命游戏”真例61猜猜瞅购例62艺术浑屏购倒63创造火焰真例64动向画造256条分歧颜色的直线真例65黑绿蓝三本色渐变第三篇概括小步调真例66二个矩阵相乘真例67艺术钟真例68家庭财务管造小步调真例69用系统时间真止随机数真例70闪动的多彩圆真例71查看系统有无鼠标真例72圆形光盘取矩形真例73动向渐变图案真例74往返二天间的小车真例75飘扬的黑旗真例76隐现蓝天黑云图形真例77百叶窗第四篇估计机等第考查上机试题(二级)第五篇估计机等第考查上机试题(三级)部分过程图真例1真例2真例3真例5真例6真例7递归函数真例8真例9真例真例真例真例13真例真例真例真例真例printf("%5d",a[i]) a[i]!=0是 可printf("\n") i++真例19真例真例21真例真例真例真例真例真例真例进造变换隐现真86真例878889真例91真例93 真例94定义整型数组变量a[N1][N2],max,min,i,j,row1,row2,column1,column2, (*ap)[4]ap=a row1=row2=column1=column2=0for( i=0; i<N1;i++)for( j=0; j<N1;j++)任性输进字符串搁到二维数组中max=min=a[0][0]for( i=0; i<N1;i++)for( j=0; j<N1;j++)max< *(*(ap+i)+j)T Fmax= *(*(ap+i)+j) ; row1=i;column1=j;min> *(*(ap+i)+j)T Fmin> *(*(ap+i)+j) ;row2=j;column2=j挨印最大值战最小值及它们天圆的止取列真例95真例96真例真例97(2)真例98真例99。

c语言程序设计流程图详解

c语言程序设计流程图详解

c语言程序设计流程图详解介绍常见的流程图符号及流程图的例子。

本章例1 - 1的算法的流程图如图1 - 2所示。

本章例1 - 2的算法的流程图如图1 - 3所示。

在流程图中,判断框左边的流程线表示判断条件为真时的流程,右边的流程线表示条件为假时的流程,有时就在其左、右流程线的上方分别标注“真”、“假"或“T”、“F”或“Y”、“N”注“真”、“假”或“T”、“F”或“Y”、“N”另外还规定,流程线是从下往上或从右向左时,必须带箭头,除此以外,都不画箭头,流程线的走向总是从上向下或从左向右。

2。

算法的结构化描述早期的非结构化语言中都有go to语句,它允许程序从一个地方直接跳转到另一个地方去。

执行这样做的好处是程序设计十分方便灵活,减少了人工复杂度,但其缺点也是十分突出的,一大堆跳转语句使得程序的流程十分复杂紊乱,难以看懂也难以验证程序的正确性,如果有错,排起错来更是十分困难。

这种转来转去的流程图所表达的混乱与复杂,正是软件危机中程序人员处境的一个生动写照。

而结构化程序设计,就是要把这团乱麻理清。

经过研究,人们发现,任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构这三种基本结构组成,因此,我们构造一个算法的时候,也仅以这三种基本结构作为“建筑单元”,遵守三种基本结构的规范,基本结构之间可以并列、可以相互包含,但不允许交叉,不允许从一个结构直接转到另一个结构的内部去。

正因为整个算法都是由三种基本结构组成的,就像用模块构建的一样,所以结构清晰,易于正确性验证,易于纠错,这种方法,就是结构化方法。

遵循这种方法的程序设计,就是结构化程序设计.相应地,只要规定好三种基本结构的流程图的画法,就可以画出任何算法的流程图.(1) 顺序结构顺序结构是简单的线性结构,各框按顺序执行.其流程图的基本形态如图1 - 4所示,语句的执行顺序为:A→B→C。

(2)选择(分支)结构这种结构是对某个给定条件进行判断,条件为真或假时分别执行不同的框的内容.其基本形状有两种,如图1-5 a)、b)所示.图1—5 a)的执行序列为:当条件为真时执行A,否则执行B;图1 — 5 b)的执行序列为:当条件为真时执行A,否则什么也不做.(3) 循环结构循环结构有两种基本形态: while型循环和do — while型循环。

第3章 最简单的C程序设计[详版课资]

第3章 最简单的C程序设计[详版课资]

说明
➢ 两个整数相除的结果为整数
如5/3的结果值为1,舍去小数部分
如果除数或被除数中有一个为负值,舍入方向 不固定。例如,-5/3,有的系统中得到的结 果为-1,在有的系统中则得到结果为-2
VC++采取“向零取整”的方法
如5/3=1,-5/3=-1,取整后向零靠拢
➢ % 运算符要求参加运算的运算对象(即操作数) 为整数,结果也是整数。如8%3,结果为2
p3 = p0 * (1 + r3/2) * (1 + r3/2); printf(”%f\n%f\n%f\n”,p1, p2, p3);
return 0;
}
课堂优质
8
3.2 数据的表现形式及其运算
3.2.1 常量和变量
3.2.2 数据类型
3.2.3 整型数据
3.2.4 字符型数据
3.2.5 浮点型数据
课堂优质
11
3.2.1 常量和变量
3.常变量:const int a=3; 4.标识符:一个对象的名字大小写字母是不同的字符 ➢ C语言规定标识符只能由字母、数字和下划线3
种字符组成,且第一个字符必须为字母或下划线 ➢ 合法的标识符:如sum,average, _total,
Class, day, BASIC, li_ling ➢ 不合法的标识符:M.D.John,¥123,#33
(2) 如果int型与float或double型数据进行运算, 先把int型和float型数据转换为double型,然 后进行运算,结果是double型
(3)字符型数据与整型数据进行运算,就是把字符的 ASCII代码与整型数据进行运算
课堂优质
30
3.2.7 运算符和表达式

C语言图形编程入门指南

C语言图形编程入门指南

C语言图形编程入门指南C语言作为一种广泛应用于软件开发领域的编程语言,具有高效、灵活和可移植的特点。

而图形编程则是C语言中一个重要的应用领域,它可以帮助开发者创建各种各样的图形界面和交互式应用程序。

本文将为读者提供一份C语言图形编程入门指南,帮助初学者快速入门并掌握基本的图形编程技巧。

一、图形编程的基本原理图形编程主要涉及两个方面:图形绘制和用户交互。

图形绘制是指在屏幕上绘制各种图形元素,如点、线、矩形和圆等。

用户交互则是指通过鼠标、键盘等输入设备与程序进行交互,实现用户的操作和反馈。

在C语言中,图形编程主要依赖于图形库的支持。

常见的图形库有BGI (Borland Graphics Interface)和OpenGL等。

BGI是一种基于DOS操作系统的图形库,而OpenGL则是一种跨平台的图形库,支持多种操作系统和硬件平台。

二、BGI图形编程入门BGI图形编程是C语言中最常用的图形编程方法之一。

它提供了一系列的函数和命令,可以实现图形绘制和用户交互。

下面是一个简单的BGI图形编程示例:```c#include <graphics.h>int main(){int gd = DETECT, gm;initgraph(&gd, &gm, "");circle(200, 200, 100);closegraph();return 0;}```上述代码使用了BGI图形库中的`initgraph`函数来初始化图形环境,`circle`函数用于绘制一个圆,`getch`函数用于等待用户按下任意键,`closegraph`函数用于关闭图形环境。

通过这段代码,我们可以在屏幕上绘制一个半径为100的圆,并等待用户的操作。

三、OpenGL图形编程入门OpenGL是一种跨平台的图形库,它提供了丰富的函数和命令,可以实现高效的图形渲染和复杂的图形效果。

下面是一个简单的OpenGL图形编程示例:```c#include <GL/glut.h>void display(){glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_POLYGON);glVertex2f(-0.5, -0.5);glVertex2f(0.5, -0.5);glVertex2f(0.5, 0.5);glVertex2f(-0.5, 0.5);glFlush();}int main(int argc, char** argv){glutInit(&argc, argv);glutCreateWindow("OpenGL Example");glutDisplayFunc(display);glutMainLoop();return 0;}```上述代码使用了OpenGL图形库中的`glutInit`函数来初始化图形环境,`glutCreateWindow`函数用于创建一个窗口,`glutDisplayFunc`函数用于指定绘制函数,`glutMainLoop`函数用于进入消息循环。

c++简单画图程序

c++简单画图程序

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

该程序的具体功能模块包括以下几项:1) 图形绘制模块。

该模块实现直线段、椭圆、矩形等图形的绘制功能。

在鼠标移动的过程中能实时显示当前绘制的图形。

2) 图形属性设置模块。

该模块实现绘图线条的线宽,线色,图形填充色等属性设置功能。

3) 图形数据暂存模块。

该模块实现直线段、椭圆、矩形等图形数据暂存功能,涉及图形的坐标、线宽、线色、填充色等数据。

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

2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。

选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。

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

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

5) 程序的流程图如下:图1 程序流程图3. 软件设计设计步骤1) 创建单文档创建一个MFC AppWizard[exe]工程,命名为“LiYuJing”,如图1所示,并创建单文档,如图2所示。

创建成功后,系统自动生成相应的类,如图3所示。

图2 创建工程图3 创建单文档图4 生成类2) 编辑菜单添加需要的菜单项,如图4所示;并在菜单的属性中设定好所对应的ID,如图5所示,各项菜单对应的ID如表1所示(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可)。

【教案】第四课 程序设计基础 编写一个简单的C语言程序

【教案】第四课  程序设计基础 编写一个简单的C语言程序

第四课程序设计基础活动主题2 编写一个简单的C语言程序教学内容分析本课是走进程序世界的第2课,是程序设计知识的基础。

主题2以Dev-C++为例介绍了C语言的集成编译环境,描述了C语言的基本逻辑结构和基础语法,并展示了一个完整的输入、编辑、保存、编译、运行的程序设计过程。

对于开展C语言程序设计来说,了解一个基本的集成编译环境,不但有用,而且必要。

教材完整地展现了C语言从输入源代码到编译到产生运行结果的全过程,这一操作技能是学习后续程序设计课程所必备的。

通过本课的学习,学生不但了解C语言的基本逻辑结构和基础语法,同时还认识了C 语言从源代码到生成可执行文件的全过程,这使得学生在学习具体的C语言程序设计时,能够对整个计算机软件工作的原理有一个全局性的认识,使之不仅见树,而且见林。

这对于接下去深入学习了解编程语言的工作流程有大帮助,同时还有利于帮助学生建立起计算思维。

教学对象分析在小学阶段,学生曾经学习过 Seratch编程,所以对于集成编译环境的概念应该不会特别陌生,但是C语言的交互方式与之前的 Scratch有本质的差别,教师在教学中要注意这点。

由于是第一次接触需要大量使用英文字符的编程,所以在教学中尽量用有趣的案例开展教学,让学生再“玩中学”“做中学”,让学生再有趣的交互体验中感受程序设计的魅力,激发起学生的学习热情和专研精神。

在第一次运行源代码的时候,学生可能会遇到一些困难,比如出现各种类型的编译错误,由于提示信息是英文的,部分学生阅读会比较吃力。

教师要有耐心引导学生注意仔细观察辨识提示信息,找到错误的根源。

这一过程虽然困难,但也是引导学生不畏困难,培养科学探究精神的时机。

教学目标1.了解Dev-C++编译运行C语言源代码的方法2.2.了解C语言的输入方式,能够识别C语言的基本语法元素3.掌握Dev-C++的启动和体验编写简单C语言程序教学重点和难点1.教学重点。

(1)程序及程序的执行过程(2)C语言的基本结构和语法(3)体验编写简单C语言程序的过程2.教学难点。

c++课程设计(简易绘图程序)

c++课程设计(简易绘图程序)

目录1、需求与功能分析 (1)2、系统总体框架 (2)3、模块设计与分析 (3)3.1画图模块 (3)3.2贴图模块 (3)3.3窗口模块 (4)3.4菜单模块 (4)3.5工具栏与状态栏模块 (4)4、类的设计与分析 (4)4.1、CAboutDlg类 (4)4.2、CChildFrame类 (4)4.3、CDib类 (4)4.4、CDrawingDoc类 (5)4.5、CDrawingView类 (6)4.6、CMainFrame类 (7)4.7、CSettingDlg类 (7)5、特色算法分析 (8)5.1 CDib类中的显示bmp位图 (8)5.2 CDrawingView类中的画图部分 (10)6、功能测试 (13)7、存在的不足与对策 (16)8、程序源代码 (17)9、使用手册 (17)10、参考文献 (20)1、需求与功能分析为了检验一个学期以来自己学习c++这门课程能够学到多少知识,加上原来就对图像处理就比较感兴趣,曾经更有想过要做一个可以合成红蓝3D图片的一款软件,就是那种需要带上红蓝眼镜才可以看到3D效果的那种图片,自己也有用photoshop做过这样的图片,但是photoshop需要调很多东西才能合成这样的图片,而且还要用相机送两个不同的角度拍两张照片作为源图片去合成红蓝3D图片,虽然我知道原理并不难,但是当我选择了”简易绘图程序”这个课程设计的题目之后,才发现每实现一个功能都需要花很多的精力,而且实现那些功能之后还会发现各种各校的bug,需要细心去寻找解决的办法。

如今课程设计也要上交,一样还有很多我想实现的功能都还没实现,最终也没有实现我想要实现的功能---合成红蓝3D图片。

只做了一些简单的绘图功能。

功能分析,目前这个软件的主要功能有如下:1、画直线:通过OnLine()函数实现。

2、画矩形:通过OnRectangle()函数实现。

3、画椭圆:通过OnEllipse()函数实现。

C如何用布局画图及出图精编版

C如何用布局画图及出图精编版

C如何⽤布局画图及出图精编版C如何⽤布局画图及出图集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-C A D如何⽤布局画图及出图?C A D布局是什么(2014-05-0617:53:51)标签:分类:1、在模型空间⾥做好A3的1:1的图框。

2、新建布局,右击页⾯设置管理器,弹出对话框,选择⼀项点击修改,弹出打印对话框,设置好打印机,纸张和打印⽐例,注意打印⽐例是1:1哦。

之后确定,你所看到的布局空间的⽩⾊部分就是⼀张1:1的A3纸。

3、双击布局空间⽩⾊部分中间的正⽅形⾥⾯,这样就在布局中进⼊了模型空间,在双击中键就可看到模型空间⾥所有的图,找到1:1的A3图框,选中,再使⽤CTRL+C,之后光标移动到布局⾥视⼝之外双击,就进⼊了布局空间,之后CTRL+V将A3图框放到布局⾥⽩⾊部分。

4、画⽅形或多边形总之是要在图框⾥⾯显⽰图纸的部分,之后和删除原先图纸上的视⼝框,找到视⼝⼯具条,将所做的⽅形转为视⼝,在视⼝⾥双击,就可以进⼊模型空间,在视⼝⼯具条上选择那种⽐例,最后打印是1:1,但是图纸上的内容就是你在视⼝⼯具条上所选择的⽐例。

其他的⽐冽要打在同⼀张纸张上,你可以在布局⾥多建两个视⼝啊,布局为我们解决什么⼀,布局是什么布局像对⼀张画进⾏裱装,像对⼀个展品加配标签,像选择取景框来观察事物布局是把实物和图纸联系起来的桥梁,通过这种过渡,更加充分地表现实物的可读性⼆,与模型空间相⽐,它为我们创造了什么1,放置图框和标题栏,像镜框⼀样,容纳任何⼤⼩的实际物体,使之主次分开,实物和说明分开2,书写⽂字和进⾏标注,布局幅⾯的确定,使字体的⼤⼩得以确定,给设置字体和标注样式带来特别的便利3,模型空间清晰简洁⽽有利取图,把各种表述放在布局上,使物体本⾝表现⼗分简洁,⽽对物体的表述⼜做到了⼗分详尽4,图纸的科学存放,⼀个模型⽣成多幅图纸,图幅⽅向⼤⼩任选,从⽽克服了模型空间保存图纸的许多缺憾5,独⽴的打印设置,模型空间的打印设置,把所有的图纸都限制在⼀个设置上,布局为我们实现了各种图幅,各种⽅向的独⽴设置6,减少重复,模型空间反映局部放⼤需要复制多个图,布局通过⼀张图可以反映多种形式字串77,避免错误,模式空间放⼤缩⼩,尺⼨会发⽣变化,布局中反映的尺⼨,与模型视图的实际尺⼨保持⼀致8,展⽰不同内容,⼀个布局,通过锁定不同的图层,可以有重点地反映多个不同的内容,模型空间则不能使其同时存在9,展⽰不同侧⾯,通过坐标系的改变,可以在⼀个布局上多⽅位地观测模型,在模型空间要达到这⼀点会很有⿇烦10,减少占⽤空间,与模型空间绘图相⽐,要达到同样的⽬的,使⽤布局可以⼤⼤节省空间三,如何实现1,建⼀个⾃⼰的模块⼀个完整的模块包括图层、线型、标注、字体、图块等,布局也⼀起设置在这个模块中,使经常⽤的东西保存在⼀起2,布局中包括什么常⽤的布局是⼀套符合国家标准的图框,打印机不能输出的图幅,设置以后,通过选择窗⼝可以改变⽐例输出字串43,怎样把图框装⼊布局在模型中准备标准图框建⽴新布局删除该布局视⼝剪切模型中的标准图框向布局中粘贴选择多边形视⼝延图框内缘确定视⼝框线4,绘制新图的准备从设计中⼼中找出⾃⼰的模块从布局中托出选定的图框从图层、线型、标注、块等选择需要的内容托⼊到新图中开始绘图这样减少每次绘图准备上的重复四,布局的编辑特点a,布局中有⼀个切换钮控制布局的编辑,在模型视图下所编辑的内容同时也修改了模型视图,在图纸视图下所编辑的内容只在布局中看到b,⼀旦再⽴新的视⼝,前⼀个视⼝的图形即转为布局的图纸视图,上述转换仅在新建视⼝和模型视⼝间转换c,调整模型视图和图纸视图时,布局的相关内容会与调整的图型实现⾃动追踪,从⽽使模型视图和图纸视图始终保持⼀致字串4总结a,使⽤布局,是绘图⽅式的⼀个升华,是由直观构图向科学构图的⼀次质变b,简单的单张图纸,可以将标准图框罩在模型视图上,并在模型⽰图中进⾏标注,这也利于图纸的交换和理解c,任何情况下,使⽤布局做图,其优势都超过在模型空间做图初始⽅式。

c语言流程图怎么画

c语言流程图怎么画

c语言流程图怎么画C语言流程图怎么画在学习和掌握编程语言C时,流程图是一个非常重要的工具。

流程图是一种图形化表示算法或程序流程的图表,它可以帮助程序员更好地理解和设计程序的逻辑结构。

本文将介绍如何使用C语言绘制流程图。

一、流程图的基本符号在开始绘制流程图之前,我们需要了解一些基本的符号和表示方法。

下面是C语言流程图常用的基本符号:1. 开始/结束符号:流程图通常以一个圆圈表示程序的开始和结束点。

2. 输入/输出符号:使用矩形表示用户的输入或程序的输出操作。

一般情况下,输入方块使用带有一个指向内部的箭头,输出方块使用带有一个指向外部的箭头。

3. 过程/处理符号:使用矩形表示算法或程序中的处理步骤。

通常情况下,处理方块使用带有一个指向下方的箭头。

4. 判断/决策符号:使用菱形表示条件判断。

判断方块通常有两个或多个分支,每个分支根据不同的条件选择不同的处理路径。

每个分支使用带有指向下方的箭头。

5. 连接线/箭头:连接不同的流程方块以表示它们之间的关系。

箭头通常是水平或垂直的,但可以根据需要进行弯曲或连接。

二、绘制流程图的步骤了解了基本的符号后,我们可以按照下面的步骤开始绘制C语言流程图:1. 确定程序的开始和结束:使用一个圆圈表示程序的开始和结束。

2. 定义输入和输出:根据程序需求,确定是否需要输入和输出操作,并在图中相应位置放置相应的方块,并用箭头标识方向。

3. 划分主要步骤:根据程序的逻辑结构,将其主要步骤划分为不同的处理方块,并按照程序的执行顺序排列。

4. 进一步细化处理方块:如果某个处理方块较为复杂,可以进一步细化,使用嵌套的处理方块或判断方块来展示其内部逻辑。

5. 连接不同的流程方块:使用箭头将不同的处理方块连接起来,以表示程序的流程。

箭头应该遵循程序的执行顺序。

6. 添加判断分支:如果程序有条件判断的部分,可以使用菱形的判断方块来表示,并使用箭头将不同的分支连接起来。

7. 优化和美化:检查流程图,确保图表的逻辑正确,并进行必要的调整和优化,使其更易读和美观。

c语言程序流程图符号及绘制方法

c语言程序流程图符号及绘制方法

c语言程序流程图符号及绘制方法Flowchart symbols in C programming include start/end symbol, input/output symbol, process symbol, decision symbol, and connector symbol. These symbols are used to represent different elements in a C program and to illustrate the flow of the program. The start/end symbol is represented by an oval shape with the word "Start" or "End" inside it. This symbol marks the beginning and end of the program. The input/output symbol is represented by a parallelogram shape with the words "Input" or "Output" inside it. This symbol indicates the input or output of data in the program. The process symbol is represented by a rectangle shape with a description of the process inside it. This symbol represents the various calculations and operations performed in the program.在C语言编程中,流程图符号包括开始和结束符号、输入/输出符号、处理符号、决策符号和连接符号。

c++简单画图程序

c++简单画图程序

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

该程序的具体功能模块包括以下几项:1) 图形绘制模块。

该模块实现直线段、椭圆、矩形等图形的绘制功能。

在鼠标移动的过程中能实时显示当前绘制的图形。

2) 图形属性设置模块。

该模块实现绘图线条的线宽,线色,图形填充色等属性设置功能。

3) 图形数据暂存模块。

该模块实现直线段、椭圆、矩形等图形数据暂存功能,涉及图形的坐标、线宽、线色、填充色等数据。

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

2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。

选择不同的线宽,线色与填充色,即可改变画笔或画刷的属性。

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

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

5) 程序的流程图如下:图1 程序流程图3. 软件设计设计步骤1) 创建单文档创建一个MFC AppWizard[exe]工程,命名为“LiYuJing”,如图1所示,并创建单文档,如图2所示。

创建成功后,系统自动生成相应的类,如图3所示。

图2 创建工程图3 创建单文档图4 生成类2) 编辑菜单添加需要的菜单项,如图4所示;并在菜单的属性中设定好所对应的ID,如图5所示,各项菜单对应的ID如表1所示(其中线宽菜单为弹出菜单,只需在菜单项目属性中的弹出选项前打勾即可,分隔线亦只需在菜单项目属性中选中分隔符选项即可)。

C++简单画图程序课设

C++简单画图程序课设

目录1.基本功能描述 ....................................................................................................... - 1 -2.设计思路 ............................................................................................................... - 1 -3.软件设计 ............................................................................................................... - 4 -3.1 设计步骤 .................................................................................................... - 4 -3.2 界面设计 .................................................................................................... - 9 -3.3 关键功能的实现 ........................................................................................ - 9 -4.结论与心得体会 ................................................................................................. - 10 -5.参考文献 ............................................................................................................. - 11 -6.思考题 ................................................................................................................. - 11 -7.附录 ..................................................................................................................... - 12 -7.1 调试报告 .................................................................................................. - 12 -7.2 测试结果 .................................................................................................. - 13 -7.3 关键源代码 .............................................................................................. - 15 -简单画图程序1.基本功能描述1)设计一个程序可完成绘制直线,矩形和椭圆的功能。

C#简单画图程序

C#简单画图程序

C#简单画图程序实现过程:(1)新建窗体应⽤程序(2)添加⼀个MenuScrip控件;添加⼀个ToolScrip控件。

在ToolScrip控件中对每个单元,要将DisplayStyle属性改为Text(3)程序代码。

1、新建菜单事件主要⽤⽩⾊清除窗体的背景,从⽽实现“⽂件新建”功能[csharp] view plain copyprivate void 新建ToolStripMenuItem_Click(object sender, EventArgs e){Graphics g = this.CreateGraphics();g.Clear(backColor);toolStrip1.Enabled = true;//创建⼀个BitmaptheImage = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);editFileName = "新建⽂件";//修改窗⼝标题this.Text = "MyDraw\t" + editFileName;ig = Graphics.FromImage(theImage);ig.Clear(backColor);} 2、打开事件⽤于打开“打开⽂件”对话框,并选择相应的图⽚,将图⽚绘制到窗体上. [csharp] view plain copyprivate void 打开ToolStripMenuItem_Click(object sender, EventArgs e){openFileDialog1.Multiselect = false;if (openFileDialog1.ShowDialog() == DialogResult.OK){//修改窗⼝标题this.Text = "MyDraw\t" + openFileDialog1.FileName;editFileName = openFileDialog1.FileName;theImage = Image.FromFile(openFileDialog1.FileName);Graphics g = this.CreateGraphics();g.DrawImage(theImage, this.ClientRectangle);ig = Graphics.FromImage(theImage);ig.DrawImage(theImage, this.ClientRectangle);//ToolBar可以使⽤了toolStrip1.Enabled = true;}} (3)保存菜单项的Click事件⽤于将窗体背景保存为BMP格式的图⽚[csharp] view plain copyprivate void 保存ToolStripMenuItem_Click(object sender, EventArgs e){saveFileDialog1.Filter = "图像(*.bmp)|*.bmp";saveFileDialog1.FileName = editFileName;if (saveFileDialog1.ShowDialog() == DialogResult.OK){theImage.Save(saveFileDialog1.FileName, ImageFormat.Bmp);this.Text = "MyDraw\t" + saveFileDialog1.FileName;editFileName = saveFileDialog1.FileName;}} (4)在Paint事件中将Image中保存的图像,绘制出来[csharp] view plain copyprivate void Form1_Paint(object sender, PaintEventArgs e){//将Image中保存的图像,绘制出来Graphics g = this.CreateGraphics();if (theImage != null){g.Clear(Color.White);g.DrawImage(theImage, this.ClientRectangle);}}(5)添加Frm_Text.cs⽂字输⼊框。

c语言课程设计流程图

c语言课程设计流程图

编程基本功训练:流程图画法及练习对于“程序设计”的工作,许多初学者的理解就是“写代码”。

同样,新手们苦恼的问题是,他们只会“写代码”。

当接到一个新的任务,不少人总是在第一时间就爬到键盘上去敲代码。

敲着敲着,就把自己绕糊涂了。

头晕脑胀地坚持下来,程序能运行,阿弥托佛,赶紧撤。

这样做出的程序,并不可靠。

在程序设计中,最重要的不是写程序,而是设计。

就像建筑、机械等行业的要画设计图、施工图,程序设计的思路也有必要用图的形式画出来。

画图的过程就是思考的过程,由于其直观性,画图的过程本身又促进了思考。

在软件工程中,已经发展出了很多种实用的图,为软件产品设计的质量提供保证。

这部分练习帮助程序设计者掌握和实践的“程序流程图”。

一、什么是程序流程图“程序流程图”常简称为“流程图”,是一种传统的算法表示法,程序流程图是人们对解决问题的方法、思路或算法的一种描述。

它利用图形化的符号框来代表各种不同性质的操作,并用流程线来连接这些操作。

在程序的设计(在编码之前)阶段,通过画流程图,可以帮助我们理清程序思路。

下图是一个简单的流程图,描述求两个数的最大公约数的算法(辗转相除法)。

勘误:最后的结果,该是output a。

感谢8楼童鞋指出!画流程图是每个程序员的基本功。

流程图有其规范,这是用于技术人员之间交流的需要,并不是想怎么画就怎么画。

流程图中常用的符号见右图,在前述求最大公约数的流程图中找出对应的部分。

二、三种控制结构的流程图表示这部分不再写文字,各种程序设计的教材中都会写一些,至少在讲各种控制结构时,总时要讲的。

请参考自己手头能找到的教材,认真品味。

我们直接提示若干任务,画一画,就会了。

三、练习题目(各部分分别至少选两个画一画,注意用一张质量好一些纸,书写整齐,确保越画越高兴)1、热身(1)将英尺转换为米(2)输入两个点的坐标,求两点之间的距离并输出2、分支程序(1)描述一下今晚的计划:如果下雪,校园内玩雪;否则,在103上机(怀念)(2)丢硬币决定今晚:正面,K歌;反面:逛街;立起来,学C++(3)求函数值:(4)输入一元二次方程ax^2+bx+c=0的各项系数,并根据各系数的值的情况,分别进行求解(考虑对系数的各种可能太复杂时,给自己降低些难度,先从不考虑系统直接求解开始)(5)输入个人月收入总额,计算出他本月应缴税款和税后收入(税率等参考第9周任务)3、循环结构(1)求1+2+3+...+100(三种循环结构都画一画)(2)输出1/3-3/5+5/7-7/9…+19/21的结果(3)一个数如果恰好等于它的因子之和,这个数就称为“完数”。

用C语言实现画图程序

用C语言实现画图程序

一、选题背景:画图程序,通过画图中的功能绘制出美丽的图案。

二、设计思想:利用数学三角函数制作山峰和花朵出一条曲线、用画圆函数绘制太阳的形状、再进行颜色填充用绘制直线的函数来绘制比较粗的光线、用矩形函数画出矩形的边框、再画地球、直线画赤道、弧线画南北极和钟表的刻度盘。

三、流程图:四、程序清单:#include"graphics.h" /*调用图形库函数*/#include"math.h" /*调用数学函数*/#include"stdio.h" /*调用标准I/O函数*/#define PI 3.141596 /*宏定义PI字符串*/main() /*主函数*/{float i,x,y; /*定义单精度浮点型变量i,x,y*/int gdriver=DETECT,gmode,a=1; /*定义整型变量gdriver,gmode*/initgraph(&gdriver,&gmode,"d:\\tc"); /*定义变量后,初始化图形系统*/cleardevice();setbkcolor(a); /*背景颜色*/printf("\n");printf("\n"); /*C 语言图形函数*/printf("\n");printf(" the following math functions were used in the main function.\n");printf(" setbkcolor(int color);\n"); /* 背景颜色*/printf(" setcolor(int color);\n"); /* 画笔颜色*/printf(" putpexel(x,y,color);\n"); /* 画像素点*/printf(" line(x1,y1,x2,y2)\n"); /* 直线函数*/printf(" rectangle(xl,yt,xr,yb)\n");; /* 矩形函数*/printf(" arc(x,y,as,ae,r)\n"); /* 圆弧函数*/printf(" circle(x,y,r)\n"); /*圆形函数*/printf(" ellipse(x,y,as,ae,rx,ry)\n"); /* 椭圆函数*/printf("\n"); /* 按任意键开始演示*/setcolor(2);setlinestyle(0,0,3);rectangle(4,4,635,475); /*绘制矩形框*/getch();cleardevice();printf("\n"); /* 模拟手工画图*/printf("\n"); /* 函数曲线图形*/setcolor(3);setlinestyle(3,3,3);rectangle(4,4,635,475); /*绘制图纸边框*/for (i=0;i<=2*PI;i+=PI/99999){putpixel(40*i,170-21*i*sin(1.6*i),2);putpixel(40.3*i,170-22*i*sin(1.6*i),3);putpixel(40.6*i,170-23*i*sin(1.6*i),10);}for (i=0;i<=2*PI;i+=PI/99999) /*绘制花朵*/{putpixel(118-15*cos(4*i)*cos(i),160-15*cos(4*i)*sin(i),14);putpixel(118-25*cos(4*i)*cos(i),160-25*cos(4*i)*sin(i),13);putpixel(118-35*cos(4*i)*cos(i),160-35*cos(4*i)*sin(i),10);}for (i=0;i<=PI;i+=PI/99999){putpixel(320-315*cos(i),360-95*sin(i),11); /*绘制拱桥*/ putpixel(320-315*cos(i),360-96*sin(i),11); /*绘制拱桥*/ putpixel(320-315*cos(i),360-97*sin(i),11); /*绘制拱桥*/ }for (a=70;a<=570;a+=50)for (i=0;i<=PI;i+=PI/9999){putpixel(a-25*cos(i),360-40*sin(i),11); /*绘制桥*/}}for (x=0;x<=640;x+=0.001){putpixel(8*x,380-8*sin(x),9); /*绘制曲线水流*/}for (x=0;x<=600;x+=0.001){putpixel(10*x,405-10*sin(x),9); /*绘制曲线水流*/}for (x=0;x<=560;x+=0.001){putpixel(12*x,430-12*sin(x),9); /*绘制曲线水流*/}for(x=60;x<=80;x+=0.01){ellipse(270,360,180 ,0,160-x,25);}for (x=0;x<=520;x+=0.001){putpixel(8*x,455-8*sin(x),9); /*绘制曲线水流*/}setlinestyle(0,0,1);setfillstyle(1,12);fillellipse(320,60,25,25); /*绘制太阳*/for (x=280;x>=250;x-=0.0001)putpixel(x,60,12); /*绘制阳光线*/}for (x=360;x>=390;x+=0.0001){putpixel(x,60,12); /*绘制阳光线*/}for (y=24;y>=12;y-=0.0001){putpixel(320,y,12); /*绘制阳光线*/}for (y=96;y<=108;y+=0.0001){putpixel(320,y,12); /*绘制阳光线*/}setlinestyle(3,0,1);setcolor(12);for (i=0;i<=2*PI;i+=PI/12) /*绘制阳光线*/{line(320+40*cos(i),60-36*sin(i),320+70*cos(i),60-48*sin(i)); for (x=0;x<=55555;x+=0.1){y=y+x; /*延时控制*/}}setcolor(13);setlinestyle(0,0,1);rectangle(460,100,620,200); /*绘制地图框(矩形)*/ setcolor(11);setlinestyle(0,0,3);ellipse(540,150,0,360,77,48); /*绘制地球(椭圆)*/circle(540,150,46); /*绘制经线(圆形)*/ellipse(540,100,210,330,45,16); /*绘制北极圈(椭圆弧)*/ellipse(540,200,30,150,45,16); /*绘制南极圈(椭圆弧)*/setcolor(14);setlinestyle(3,0,1);line(460,150,620,150); /*绘制赤道(水平线)*/line(540,100,540,200); /*绘制经线(垂直线)*/setcolor(11); setlinestyle(0,0,1);for (i=0;i<=2*PI;i+=PI/300){putpixel(590-35*cos(i),50-35*sin(i),11); /*绘制0.1秒刻度*/}setcolor(14);setlinestyle(0,0,1);circle(590,50,2); /*绘制中心轴*/setcolor(13);setlinestyle(0,0,3);for (i=0;i<=2*PI;i+=PI/6){line(590+25*sin(i),50-25*cos(i),590+30*sin(i),50-30*cos(i));/*绘制小时*/for (x=0;x<=5555;x+=0.001){y=y+x; /*延时控制*/}getch();closegraph(); }五、主要解决问题的方法及技术关键1、主要问题及解决方法✓抛物线的画法用插补法画抛物线。

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

简单画图程序1.基本功能描述本次课程设计的任务是利用计算机和VC开发环境编写一个简单画图程序,该程序的设计指标(即主要功能)有:①用鼠标拖动绘制圆、椭圆、矩形,线等基本图形;②能控制画笔的线宽和颜色;③能对图形进行颜色填充;④在鼠标移动的过程中能实时显示当前绘制的图形。

除了以上几点功能,我有另外添加了工具栏、铅笔、橡皮等功能来使程序更方便地让用户使用,简化了人机交互的过程。

2.设计思路首先是界面的问题,既然课设的题目是简单画图,那在建立工程的时候就要选择文档结构而不是以前做的基于对话框。

可选择单文档结构或多文档结构,但想到画图界面一般只有一个,从简洁的角度考虑,选择单文档结构。

而且用户界面在设计的时候要尽可能简单美观,一目了然,对相应功能有图标提示,使用户方便使用。

然后便是画图功能的具体实现。

分析课设要求,可以发现功能一要求的的椭圆、矩形、直线可以分别通过Ellipse();、Rectangle();、MoveTo();、LineTo();这四个函数来实现。

功能二控制画笔线宽和颜色可以给二者分别关联参数,通过改变线宽参数值来控制线宽,通过调用通用对话框改变颜色参数值来控制颜色。

功能三对图形进行颜色填充虽以前未接触过,但查阅资料后发现可以调用ExtFloodFill();并合理设定参数值来实现。

功能四的实时显示功能可以通过调用MouseMove();函数来实现。

这些功能需要建立菜单资源来表示各个功能选项,并建立相应的消息响应函数来进行实现。

另外,画图程序主要是通过鼠标来进行操作,所以要对鼠标消息的响应及处理函数多下功夫来思考和编写。

至于额外添加的功能,工具栏通过添加工具栏资源和关联相应菜单中画图功能ID实现;铅笔、橡皮的功能则是利用MouseMove();函数,在其中做了一些改动来实现。

图1 程序流程图MouseMove 函数鼠标左键弹起响应函数m_ptOldOrigin=point;2.1.程序流程图:开始 变量初始化(m_nDrawType ,m_clr 等)铅笔橡皮点直线椭圆线宽线型设置颜色选择填充响应函数 m_Pen(m_Eraser)=TRUE并将其他橡皮(铅笔)、填充等所关联变量置为FALSE.响应函数 m_nDrawType =1/2/3/4;对应点、直线、矩形、椭圆矩形响应函数 创建相应对话框IDOK==1?更改变量m_clr (m_nLineWidth ,m_nLineStyle)参数值响应函数 m_Fill=TRUE 并将其他橡皮、铅笔等所关联变量置为FALSE.鼠标左键按下 响应函数m_ptNewOrigin=point; 进行填充铅笔功能橡皮功能画点画直线画矩形画椭圆结束判断各参数值以确定功能3.软件设计3.1.设计步骤1)打开VS2010,选择新建项目,选中MFC应用程序,标题为CWN_Graphic;2)选择单文档结构,其他为默认值,点击完成。

3.2 .界面设计3.2.1.添加菜单1)选择资源视图,鼠标右键,添加,资源;2)在资源视图中打开添加的菜单资源,将各个功能的名称添加进去并合理安排,并设置好相应的ID,如图2:图2编辑菜单及相应ID3.2.2 .添加工具栏1)在资源视图下右键选择添加资源,ToolBar;2)打开新建的工具栏,在上面添加各个小按钮,按钮图像自行画出;3)将每个按钮的ID与菜单项一一对应起来,如图3:图3工具栏样式及ID3.3.关键功能实现1)打开类向导;2)为各个菜单项添加消息函数,如图4:图4 添加消息函数相关ID、关联变量及响应函数如表1:表1相关功能ID 及所关联变量名称ID 关联变量响应函数点IDM_DOT m_nDrawType = 1 OnDot()直线IDM_LINE m_nDrawType = 2 OnLine()矩形IDM_RECTANGLE m_nDrawType = 3 OnRectangle()椭圆IDM_ELLIPSE m_nDrawType = 4 OnEllipse()画笔IDM_PEN m_Pen = TRUE OnPen()填充IDM_FILL m_Fill = TRUE OnFill()橡皮(小)IDM_ERASER1 - OnEraser1()橡皮(中)IDM_ERASER2 - OnEraser2()橡皮(大)IDM_ERASER3 - OnEraser3()线宽+线型IDM_LINE_WIDTH - OnLineWidth()颜色IDM_Color - OnColor()3)按照所需在CWN_GraphicView.h中添加变量并在CWN_GraphicView.cpp中对变量初始化:UINT m_nDrawType = 0;//绘画类型初始为0CPoint m_ptOldOrigin = 0;//坐标点初始为(0,0)CPoint m_ptNewOrigin = 0;UINT m_nLineWidth = 0;//线宽初始为0UINT m_EraserWidth = 1;//橡皮初始大小为1INT m_nLineStyle = 0;//线宽初始为0BOOL m_Pen = FALSE;//画笔功能未被选中BOOL m_Eraser = FALSE;//橡皮功能未被选中BOOL m_LButtonDown = FALSE;//鼠标左键未按下BOOL m_Fill = FALSE;//填充功能未被选中COLORREF m_clr = RGB(0,0,0);//颜色初始值为黑色4)在各响应函数中添加相应代码,例如:/**********左键按下************//*该函数实现了再鼠标左键按下时确定按下点的坐标、将左键被按下置为1和判断是否填充选项被选中,若选中则进行填充,未选中则无操作*/void CCWN_GraphicView::OnLButtonDown(UINT nFlags , CPoint point){m_ptNewOrigin=point; //将当前点坐标传给变量m_ptOldOrigin=point;m_LButtonDown=TRUE; //左键按下赋值1if(m_Fill==TRUE) //填充功能{CClientDC dc(this);HBRUSH hBrush=CreateSolidBrush(m_clr); //选择画刷dc.SelectObject(hBrush);dc.ExtFloodFill (m_ptNewOrigin.x,m_ptNewOrigin.y,RGB(0,0,0),0);//该函数将使用当前刷子填充显示表面区域}CView::OnLButtonDown(nFlags,point);}/***********左键松开************//*该函数通过在鼠标左键松开时,将松开点坐标传给PC,并由之前选择的绘画类型来判断要进行的绘画操作*/void CCWN_GraphicView::OnLButtonUp(UINT nFlags , CPoint point){m_LButtonDown=FALSE; //左键松开赋值0CClientDC dc(this);CPen pen(m_nLineStyle,m_nLineWidth,m_clr); //创建画笔画刷dc.SelectObject (&pen); //选择画笔CBrush*pBrush=CBrush::FromHandle ((HBRUSH)GetStockObject(NULL_BRUSH));dc.SelectObject (pBrush); //选择画刷m_ptNewOrigin=point; //左键松开的坐标点送给m_ptNewOriginswitch(m_nDrawType){case 1:/*******画点*******/dc.SetPixel(point,m_clr);break;case 2:/*******画线*********/dc.MoveTo (m_ptOldOrigin);dc.LineTo (m_ptNewOrigin);break;case 3:/**********画矩形**********/dc.Rectangle (CRect(m_ptOldOrigin,m_ptNewOrigin));break;case 4:/*********画椭圆**********/dc.Ellipse (CRect(m_ptOldOrigin,m_ptNewOrigin));break;}CView::OnLButtonUp (nFlags,point);}/*************线型+线宽设置*********//*该函数在线型线宽功能被选择时,会生成一个线型线宽设置对话框(之前在资源中添加和编辑的对话框资源),并将用户操作后的线型线宽值传给PC*/void CCWN_GraphicView::OnLineWidth(){// TODO: 在此添加命令处理程序代码CSettingDlg line_dlg;line_dlg.m_nLineWidth = m_nLineWidth ; //将先前设置的线宽回传给对话框line_dlg.m_nLineStyle = m_nLineStyle; //将先前设置的线型回传给对话框if(IDOK==line_dlg.DoModal ()){m_nLineWidth=line_dlg.m_nLineWidth ;m_nLineStyle = line_dlg.m_nLineStyle ;}}/*************动态显示函数******************//*该函数单独写出,配合OnMouseMove();函数可实现动态显示的功能*/void CCWN_GraphicView::Draw(){CClientDC dc(this);CPen pen(m_nLineStyle,m_nLineWidth,m_clr);CPen *oldPen=dc.SelectObject(&pen);dc.SelectStockObject(NULL_BRUSH);int drawmode=dc.SetROP2(R2_NOTXORPEN);/*R2_NOTXORPEN模式的作用是:先把画笔的颜色取反,再与屏幕颜色进行“或”操作,从而得到像素最终显示的颜色。

*/switch(m_nDrawType){case 2:dc.MoveTo(m_ptOldOrigin);dc.LineTo(m_ptNewOrigin);break;case 3:dc.Rectangle(CRect(m_ptOldOrigin,m_ptNewOrigin));break;case 4:dc.Ellipse(CRect(m_ptOldOrigin,m_ptNewOrigin));break;}dc.SetROP2(drawmode);dc.SelectObject(oldPen);}/*************MOUSE MOVE***************//*此函数与前面的动态显示函数(Draw();)进行配合便可实现在鼠标移动时的实时显示功能,思路是在绘图时,先用屏幕背景色覆盖掉鼠标移动前的画面,然后用选定的画笔颜色重新绘制下一次鼠标移动的画面*/void CCWN_GraphicView::OnMouseMove(UINT nFlags, CPoint point){// TODO: 在此添加消息处理程序代码和/或调用默认值CClientDC dc(this);CPen pen(m_nLineStyle,m_nLineWidth,m_clr);CPen *oldPen=dc.SelectObject(&pen);if(m_LButtonDown!=FALSE){Draw();m_ptNewOrigin=point;Draw();if(m_Pen==TRUE) //铅笔功能{m_nDrawType=0; //画图类型改为初始值,以免多重画图dc.MoveTo (m_ptOldOrigin);dc.LineTo (m_ptNewOrigin);//修改线段起点m_ptOldOrigin=m_ptNewOrigin;m_ptNewOrigin=point;}if(m_Eraser==TRUE) //橡皮功能{m_nDrawType=0;CPen pen(m_nLineStyle,m_EraserWidth,RGB(255,255,255));dc.SelectObject(&pen);dc.MoveTo (m_ptOldOrigin);dc.LineTo (m_ptNewOrigin);//修改线段起点m_ptOldOrigin=m_ptNewOrigin;m_ptNewOrigin=point;}}dc.SelectObject(oldPen);CView::OnMouseMove(nFlags, point);}/************选择铅笔**************//*该函数在选择铅笔功能后,将铅笔功能置为真,其他有干扰的功能置为假*/void CCWN_GraphicView::OnPen(){// TODO: 在此添加命令处理程序代码m_Pen = TRUE; //画笔被选中m_Fill = FALSE; //取消填充功能m_Eraser = FALSE; //取消橡皮功能}4.结论与心得体会本次课程设计虽说是“简单”画图程序的设计,但真要是自己做起来,感觉一点也不简单。

相关文档
最新文档