下载此文档

操作系统课程设计C语言实现画板.pdf


文档分类:IT计算机 | 页数:约19页 举报非法文档有奖
1/19
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/19 下载此文档
文档列表 文档介绍
该【操作系统课程设计C语言实现画板 】是由【青山代下】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【操作系统课程设计C语言实现画板 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:....FoshanUniversity课程设计说明书操作系统课程和设计学院:电子与信息工程学院专业:2012网络工程2学号:学生:二〇一五年七月....:..---课程设计任务书专业级班一、设计题目:操作系统图形显示程序接口设计二、主要容:本设计的目的是通过设计一些简单的中断调用接口,使学生掌握程序接口的设计方法。要求在熟悉DOS操作系统的中断接口及程序接口的基础上,利用C语言设计简单的显示程序接口,最后通过程序验证全部接口的正确性。三、具体要求利用C语言设计DOS中断中21H与图形操作相关的中断调用,具体包括:1、设置点阵图形的彩色2、画点3、画线4、画矩形5、画圆-.:..---、屏幕区域填充7、屏幕区域保存8、屏幕区域逻辑恢复9、清除屏幕/区域10、屏幕区域卷动11、鼠标控制12、多窗口功能上述功能由两部分程序验证,中断驻留程序和验证程序。首先运行中断驻留程序,然后运行验证程序得到预期结果。四、进度安排1-2天:资料查找、系统分析,数据流程分析,概要设计1-2天:系统详细设计、功能设计5-6天:模块设计、编程调试1天:资料整理、课程设计说明书编写。五、完成后应上交的材料1、课程设计说明书(程序流程图、功能模块图、相关数据结构、核心算法等)-.:..---、相关源程序文件六、总评成绩指导教师签名日期年月日系主任审核日期年月日目录一、…………………………………………………...………………………………………………....5二、概念原理……………………………………............................5三、总体设计……………………………………………………….…………………………………………………....……………………………………..………………...6四、详细设计………………………………………………………...………………………………………………….....7-.:..---...7六、使用说明………………………………………………………...7七、设计总结………………………………………………………..……………………………………………………...……………………………………………………...……………………………………………………...9参考资料…………………………………………………………..........9附录…………………………………………………………..........,利用C语言、DOS中断中21H与屏幕显示相关的中断调用进行设计的,主要完成要求中所提到的功能如:画点、画线、画圆、填充、恢复、屏幕滚动等。,会使功能无法衔接,模块化感严重,功能使用不连续的问题,用户体验非常低。所以经过思考了查阅资料后,改用单面板上,鼠标控制输入的办法实现功能,鼠标的控制使用已经包含了中断机制,所以不用特意添加其他功能模块的-.:..---int33h中断功能调用组,随时获取鼠标位置以及功能选择。GetCursorPos(&point);//获取鼠标指针位置(屏幕坐标),调用ScreenToClient(hwnd,&point);//将鼠标指针位置转换为窗口坐标,最后再检测鼠标按下左键的状态,调用函数GetAsyncKeyState(VK_LBUTTON)。:顾名思义,是指当出现需要时,CPU暂时停止当前程序的执行而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。(GDI)提供了一系列的函数和相关的结构,应用程序可以使用它们在显示器、打印机或其他设备上生成图形化的输出结果。使用GDI函数可以绘制直线、曲线、闭合图形、路径、文本以及位图图像。所绘制的图形的颜色和风格依赖于所创建的绘图对象,即画笔、笔刷和字体。你可以使用画笔来绘制直线和曲线,使用笔刷来填充闭合图形的部,使用字体来书写文本。,指的是当加载进存的程序执行完毕后,依然能够保存产生的临时数据跟临时状态,而在下一次调用时继续执行。,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”-.:..---用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个核与用户空间程序交互的接口,它好比一个中间人,把用户进程的请求传达给核,待核把请求处理完毕后再将处理结果送回给用户空间。-.清除屏幕/区域:..---(&point);函数获取鼠标指针位置(屏幕坐标),随时获取鼠标位置以及功能选择。调用ScreenToClient(hwnd,&point);//将鼠标指针位置转换为窗口坐标,调用函数GetAsyncKeyState(VK_LBUTTON),检测鼠标按下左键的状态,根据鼠标状态选择功能并输出。()输出功能面板边框以及调色板色块GetCursorPos(&point);//获取鼠标指针位置(屏幕坐标)ScreenToClient(hwnd,&point);//将鼠标指针位置转换为窗口坐标Line()画线函数Bar()画条函数Rectangle()画矩形函数Circle()画圆函数Setfillstyle()设置填充图样和颜色函数Getimage()保存图像函数Putimage()输出图像函数Cleardevice();刷新屏幕-.:..---,设置点阵图形的彩色,画点,画线,画矩形,画圆,屏幕区域填充,屏幕区域保存,屏幕区域逻辑恢复,清除屏幕/区域,鼠标控制,多窗口功能。屏幕卷动功能尚未实现,但大部分及主要功能都已实现,并不影响使用,部分功能存在BUG,使用时需遵循一定使用方法,有待改善。、画曲线2、画直线3、画矩形4、画圆5、封闭区域颜色填充6、保存画面到文件7、清屏8、撤销一步操作9、恢复之前保存的文件到画面上底部为调色板,点击选色-.:..----.:..---DOS界面操作的选项菜单来说,更加便利以及直观,可以在同一窗口看到多次操作的结果,用户体验更好,而且全程鼠标控制,直观的菜单栏都是本软件亮点。,我使用的是传统的选择菜单模式实现功能,每个功能都需要经过一次选择和退出才能执行下一个功能,没有连贯性,并不符合我们本次任务的画板功能,经过与同学的讨论分析后,我们才决定重新开始,更改界面,这告诉我们要摆脱定势思维,因为我们****惯于作选项接口,就忘了分析。做项目之前应先分析清楚,所需要的方法及功能再开始程序设计,而不应该使用老方法,直接开始。,曾经以为C语言有许多功能都无法实现,但当开始课程设计并查找资料都发现,C语言功能强大而且深奥,之前所学****的东西可以说是沧海一粟,是在拿不出手,经过了大量翻阅C语言高级教程后,才有所了解。数据结构与操作系统知识也是不可或缺,作为本次设计的核心,操作系统的中断功能又花费了我们大量的时间来理解,然后用C语言实现,又一次锻炼了我的编码功能,在做后退功能的时候,需要用到栈结构来保存之前多部操作,但是实现了栈之后,却无法实现类类型入栈,所以最终只能做出单步恢复的功能,还是有待改进。本次课程设计让我加深了,软件设计的整个流程以及对语言的熟悉程度,为以后打下坚实基础。-.:..---参考资料1、《计算机操作系统教程》(第2版)尧学史美林编著清华大学2、《操作系统实验指导》任爱华鹏方毅清华大学3、《操作系统实验教程核心技术与编程实例》顾宝根王立松顾喜梅科学4、《C++编程思想》Bruck著侯捷译***5、《C语言程序中清除键盘缓冲区的方法》长虹职业技术学院学报附录#include<>#include<>#include<>#include<>voidmain(){voidshow();IMAGEimg;initgraph(1000,680);//初始化绘图窗口HWNDhwnd=GetHWnd();//获取绘图窗口句柄POINTpoint;setfillcolor(LIGHTGRAY);show();intx1,y1,a=0,p,color;调色板-.:..---outtextxy(15,220,t);outtextxy(10,635,seban);outtextxy(15,270,s);outtextxy(10,320,c);outtextxy(15,380,b);outtextxy(3,430,r);while(true){GetCursorPos(&point);//获取鼠标指针位置(屏幕坐标)ScreenToClient(hwnd,&point);//将鼠标指针位置转换为窗口坐标if(GetAsyncKeyState(VK_LBUTTON)){if(>630){setcolor(getpixel(,));color=getpixel(,);}if(<60){if(>0&&<=50)//曲线a=0;if(>50&&<=100)//直线a=1;if(>100&&<=150)//矩形a=2;if(>150&&<=200)//圆a=3;if(>200&&<=250)//fulla=4;if(>300&&<=350)//刷新屏幕,重新输出所有{getimage(&img,60,0,1000,610);cleardevice();-.:..---show();outtextxy(10,320,c);outtextxy(15,270,s);outtextxy(15,220,t);outtextxy(10,635,seban);outtextxy(15,380,b);outtextxy(3,430,r);}if(>250&&<=300)//保存{getimage(&img,60,0,1000,610);HWNDhwnd=GetHWnd();已保存到MB_OK);}if(>350&&<=400)//后退a=5;if(>400&&<=450)//恢复到文件容a=6;}while(1){x1=;y1=;if(a==0)//曲线{getimage(&img,60,0,1000,610);GetCursorPos(&point);//获取鼠标指针位置(屏幕坐标)ScreenToClient(hwnd,&point);//将鼠标指针位置转换为窗口坐标line(x1,y1,,);if(!GetAsyncKeyState(VK_LBUTTON))-.:..---break;}if(a==2)//矩形{if(!GetAsyncKeyState(VK_LBUTTON)){getimage(&img,60,0,1000,610);GetCursorPos(&point);//获取鼠标指针位置(屏幕坐标)ScreenToClient(hwnd,&point);//将鼠标指针位置转换为窗口坐标line(x1,y1,,y1);line(x1,y1,x1,);line(x1,,,);line(,y1,,);break;}}if(a==1)//直线{if(!GetAsyncKeyState(VK_LBUTTON)){getimage(&img,60,0,1000,610);GetCursorPos(&point);//获取鼠标指针位置(屏幕坐标)ScreenToClient(hwnd,&point);//将鼠标指针位置转换为窗口坐标line(x1,y1,,);break;}}if(a==3)//圆{-.:..---if(!GetAsyncKeyState(VK_LBUTTON)){getimage(&img,60,0,1000,610);GetCursorPos(&point);//获取鼠标指针位置(屏幕坐标)ScreenToClient(hwnd,&point);//将鼠标指针位置转换为窗口坐标farcircle(x1,y1,(int)sqrt((-x1)*(-x1)+(-y1)*(-y1)));break;}}if(a==4)//full{if(!GetAsyncKeyState(VK_LBUTTON)){getimage(&img,60,0,1000,610);GetCursorPos(&point);//获取鼠标指针位置(屏幕坐标)ScreenToClient(hwnd,&point);//将鼠标指针位置转换为窗口坐标setfillcolor(color);setfillstyle(BS_SOLID);floodfill(,,BLACK);break;}}if(a==5)//后退{putimage(60,0,&img);break;}if(a==6)//文件恢复putimage(0,0,&img);break;-.:..---}}}}}voidshow(){farfloodfill(1,1,BLUE);setbkmode(TRANSPARENT);//背景模式。透明setcolor(BLACK);setfillcolor(BLACK);setfillstyle(BS_SOLID);bar(75,620,95,640);//使用对角线坐标画矩形setcolor(RED);setfillcolor(RED);setfillstyle(BS_SOLID);bar(75,650,95,670);//使用对角线坐标画矩形setcolor(GREEN);setfillcolor(GREEN);setfillstyle(BS_SOLID);bar(105,620,125,640);//使用对角线坐标画矩形setcolor(BLUE);setfillcolor(BLUE);setfillstyle(BS_SOLID);bar(105,650,125,670);//使用对角线坐标画矩形setcolor(YELLOW);setfillcolor(YELLOW);-.:..---bar(135,620,155,640);//使用对角线坐标画矩形setcolor(BROWN);setfillcolor(BROWN);setfillstyle(BS_SOLID);bar(135,650,155,670);//使用对角线坐标画矩形setcolor(CYAN);setfillcolor(CYAN);setfillstyle(BS_SOLID);bar(165,620,185,640);//使用对角线坐标画矩形setcolor(MAGENTA);setfillcolor(MAGENTA);setfillstyle(BS_SOLID);bar(165,650,185,670);//调色板输出完成setcolor(BLACK);setfillcolor(LIGHTGRAY);setlinestyle(0,2);line(60,0,60,680);line(0,50,60,50);line(0,100,60,100);line(0,150,60,150);line(0,200,60,200);line(0,250,60,250);line(0,300,60,300);line(0,350,60,350);line(0,400,60,400);line(0,450,60,450);line(0,610,1000,610);//边线-.:..---setlinestyle(0,4);//按钮line(5,30,10,20);line(10,20,20,30);line(20,30,30,20);line(30,20,40,30);line(40,30,50,20);//波浪线line(10,75,50,75);//直线rectangle(10,110,50,140);//矩形circle(30,175,18);//圆}-.

操作系统课程设计C语言实现画板 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数19
  • 收藏数0 收藏
  • 顶次数0
  • 上传人青山代下
  • 文件大小1.48 MB
  • 时间2024-04-14