c语言课程设计报告-简易绘图_第1页
c语言课程设计报告-简易绘图_第2页
c语言课程设计报告-简易绘图_第3页
c语言课程设计报告-简易绘图_第4页
c语言课程设计报告-简易绘图_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

计算机科学与技术学院《C高级语言程序设计》课程设计报告(2013/2014学年第一学期)学生姓名:白小军学生专业:软件工程学生班级:122002班学生学号:201220040201指导教师:胡春霞2013年12月24日第一章功能需求描述1.1功能列表简易绘图程序的功能如下:1.1.1提供8种颜色1.1.25种画笔的大小(画的都是圆)1.1.3清屏和退出1.2功能说明1.2.1初始有默认选的画笔颜色为黑色,默认的大小为最小1.2.2绘制的过程中实际显示的是一个实心圆1.2.3选择画笔的大小实际为选择所画圆的半径的像素大小1.3操作界面1.4操作方法执行程序后,弹出绘图窗口:有默认的颜色画笔和大小,可以选择画笔的颜色,画笔的大小,在空白区域点鼠标左键来绘图,再增加清屏和退出功能。第二章设计描述2.1任务分解说明voidIndex(void);//初始化绘图voidLoadimg(void);//载入图片voidScolor(void);//设置右边栏选择颜色voidBrush_size(void);//设置画笔大小的显示voidart(void);//程序画图核心函数2.2主要数据结构设计说明MOUSEMSGm;//定义全局获取鼠标信息的变量详细如下structMOUSEMSG{UINTuMsg;//当前鼠标消息boolmkCtrl;//Ctrl键是否按下boolmkShift;//Shift键是否按下boolmkLButton;//鼠标左键是否按下boolmkMButton;//鼠标中键是否按下boolmkRButton;//鼠标右键是否按下intx;//当前鼠标x坐标inty;//当前鼠标y坐标intwheel;//鼠标滚轮滚动值};"当前鼠标消息"可能是以下值:WM_MOUSEMOVE鼠标移动消息WM_MOUSEWHEEL鼠标滚轮拨动消息WM_LBUTTONDOWN左键按下消息WM_LBUTTONUP左键弹起消息WM_LBUTTONDBLCLK左键双击消息WM_MBUTTONDOWN中键按下消息WM_MBUTTONUP中键弹起消息WM_MBUTTONDBLCLK中键双击消息WM_RBUTTONDOWN右键按下消息WM_RBUTTONUP右键弹起消息WM_RBUTTONDBLCLK右键双击消息2.3主要函数接口说明2.3.1主函数接口及包含的函数接口intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd)//程序的入口{ Index();//初始化绘图 Loadimg();//载入图片 Scolor();//设置右边栏选择颜色 Brush_size();//设置画笔大小的显示 art();//程序画图核心函数 closegraph();//关闭绘图屏幕 return0;}2.3.2载入图片函数接口voidLoadimg(void){ loadimage(&img,"图片位置"); putimage(横坐标,纵坐标,&img); }2.3.3设置右边栏选择颜色函数接口voidScolor(void){ setfillcolor(填充颜色); fillrectangle(左上角横坐标,左上角纵坐标,右下角横坐标,右下角纵坐标);}第三章算法描述3.1主要函数的程序流程图图3.1.1主函数流程图图3.1.2初始绘图界面流程图图3.1.2初始绘图界面流程图第四章开发过程描述4.1源代码/*时间:2013年12月24日22:35:281.该程序实现画图的基本功能:可选择提供的8种颜色,5种画笔的大小(画的都是圆),以及两种额外功能,清屏和退出2.运用了WinMain函数来实现窗口程序3.运用graphics.h库来实现绘图操作*/#include<graphics.h>//绘图库头文件MOUSEMSGm;//定义全局获取鼠标信息的变量详细如下/*structMOUSEMSG{UINTuMsg;//当前鼠标消息boolmkCtrl;//Ctrl键是否按下boolmkShift;//Shift键是否按下boolmkLButton;//鼠标左键是否按下boolmkMButton;//鼠标中键是否按下boolmkRButton;//鼠标右键是否按下intx;//当前鼠标x坐标inty;//当前鼠标y坐标intwheel;//鼠标滚轮滚动值};*//*"当前鼠标消息"可能是以下值:WM_MOUSEMOVE鼠标移动消息WM_MOUSEWHEEL鼠标滚轮拨动消息WM_LBUTTONDOWN左键按下消息WM_LBUTTONUP左键弹起消息WM_LBUTTONDBLCLK左键双击消息WM_MBUTTONDOWN中键按下消息WM_MBUTTONUP中键弹起消息WM_MBUTTONDBLCLK中键双击消息WM_RBUTTONDOWN右键按下消息WM_RBUTTONUP右键弹起消息WM_RBUTTONDBLCLK右键双击消息*/voidIndex(void);//初始化绘图声明voidLoadimg(void);//载入图片声明voidScolor(void);//设置右边栏选择颜色的声明voidBrush_size(void);//设置画笔大小的显示的声明voidart(void);//程序画图核心函数的声明/*用VC6.0来写,而且要写窗口类程序,VC6.0提供了一个专门用作窗口类程序的入口函数WinMain()函数原型intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow);*/intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd)//程序的入口{ Index();//初始化绘图 Loadimg();//载入图片 Scolor();//设置右边栏选择颜色 Brush_size();//设置画笔大小的显示 art();//程序画图核心函数 closegraph();//关闭绘图屏幕 return0;}//初始化绘图voidIndex(void){ initgraph(800,600);//初始化800x600的绘图屏幕 setbkcolor(WHITE);//设置白色背景 cleardevice();}//载入图片voidLoadimg(void){ IMAGEimg; loadimage(&img,"E:\\c语言源文件\\c语言课程设计\\小军画图\\1.jpg"); putimage(740,0,&img); loadimage(&img,"E:\\c语言源文件\\c语言课程设计\\小军画图\\2.jpg"); putimage(740,527,&img); loadimage(&img,"E:\\c语言源文件\\c语言课程设计\\小军画图\\3.jpg"); putimage(30,573,&img); loadimage(&img,"E:\\c语言源文件\\c语言课程设计\\小军画图\\4.jpg"); putimage(740,570,&img); loadimage(&img,"E:\\c语言源文件\\c语言课程设计\\小军画图\\5.jpg"); putimage(670,570,&img);}//设置右边栏选择颜色voidScolor(void){ setfillcolor(RGB(255,255,255));//设置填充颜色白 fillrectangle(750,10,790,50);//填充左上角(750,10)右下角(790,50)的矩形 setfillcolor(RGB(0,0,0));//黑 fillrectangle(750,60,790,100); setfillcolor(RGB(0,0,255));//蓝 fillrectangle(750,110,790,150); setfillcolor(RGB(0,255,0));//绿 fillrectangle(750,160,790,200); setfillcolor(RGB(0,255,255));//浅蓝 fillrectangle(750,210,790,250); setfillcolor(RGB(255,0,0));//红 fillrectangle(750,260,790,300); setfillcolor(RGB(255,0,255));//紫红 fillrectangle(750,310,790,350); setfillcolor(RGB(255,255,0));//黄 fillrectangle(750,360,790,400); }//设置画笔大小的显示voidBrush_size(void){ for(inti=1;i<=5;i++) { setfillcolor(BLACK);//设置填充颜色 solidcircle(80+30*i,580,i*3);//填充圆心坐标为(80+30*i,580)半径为i*3个像素的大小 }}//程序画图核心函数voidart(void){ inta=3;//设置初始化(默认)画笔大小(圆心半径的像素) fillrectangle(750,480,790,520);//设置初始currentcolor显示为黑色 while(true) { m=GetMouseMsg();//GetMouseMsg()来获取鼠标的信息 switch(m.uMsg) { caseWM_LBUTTONDOWN://如果鼠标左键按下 if(m.x>740) { if(m.y>570) return;//如果鼠标坐标x>740,y>570,即点中Exit选项,退出函数,否则,永远不会终止 switch(int(m.y/50)) { case0:setfillcolor(RGB(255,255,255));break; case1:setfillcolor(RGB(0,0,0));break; case2:setfillcolor(RGB(0,0,255));break; case3:setfillcolor(RGB(0,255,0));break; case4:setfillcolor(RGB(0,255,255));break; case5:setfillcolor(RGB(255,0,0));break; case6:setfillcolor(RGB(255,0,255));break; case7:setfillcolor(RGB(255,255,0));break; } fillrectangle(750,480,790,520);//点了某个图中的颜色后,先设置填充颜色,再在currentcolor上面显示出所选择的颜色 } else { if(m.x>95&&m.x<245&&m.y>565&&m.y<595) { setcolor(WHITE); rectangle(65+30*(a/3),565,95+30*(a/3),595);//将上一次的黑色矩形框消除(用白色矩形框代替) switch(int((m.x-95)/30)) { case0:a=3;break; case1:a=6;break; case2:a=9;break; case3:a=12;break; case4:a=15;break;//选择画笔的大小 } setcolor(BLACK); rectangle(65+30*(a/3),565,95+30*(a/3),595);//将选择的画笔用一个黑色的矩形方框框起来 } else if(m.x>670&&m.x<730&&m.y>570&&m.y<600)//如果选中清屏选项 { setfillcolor(WHITE);//设置白色填充色 solidrectangle(0,0,740,564);//将整个可涂区域清白 setfillcolor(BLACK);//设置默认的黑色填充色 } else if(m.x<750&&m.y<550) solidcircle(m.x,m.y,a);//在可涂区域用所选择的颜色,画笔大小画一个实心圆,半径为a } break; caseWM_MOUSEMOVE://鼠标移动信息 if(m.mkLButton&&m.x<725&&m.y<550)//如果在可涂的最大区域内,并且鼠标左键按下

温馨提示

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

评论

0/150

提交评论