用C语言实现键盘画图.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用C语言实现键盘画图

用C语言实现键盘画图1.引言笔者在开发县级电网调度自动化系统的过程中,碰到一个要绘制电力系统一次接线图的问题。由于电力系统一次接线图比较复杂,图上有一些特殊的符号,象变压器符号、开关符号等等,用一般的编程方法来绘制比较困难,因此,笔者用C语言开发了一个手工绘制电力系统一次接线图的键盘绘图程序,使用该程序绘制的一次接线图符合用户需求,效果良好。2.使用方法程序中定义了几个特殊键:V”:画笔提起W”:开始画图R”:开始擦图S”:当前图形存入文件E”:调出已有文件C”:画圆  程序一运行,屏幕上出现一个黄色的边框来设定画图的区域,区域中间出现提起的画笔符号 ,当按下”W“键时,画笔符号变为 ,此时可移动方向键(上、下、左、右、左上、左下、右上、右下)来画图;当按下”R“键时,画笔符号变为 ,此时可移动方向键来擦图;在画图过程中,按下“C”键,可画出一个半径为20个象素点的圆;当结束画图时,按下“S”键,将画好的图形存盘;按下“E”键可调出已有的图形进行编辑。3.源程序清单# include graphics.h# include stdio.h# include fcntl.h# include stdlib.hmain()void save(),load();void *wg,*rg,*vg,*fy;intdriver,mode;int c=RED;int x=320,y=225;int x1,y1,x2,y2;int k,k1,k2;/* initialize grapher */detectgraph(driver,mode);initgraph(driver,mode,c:\tc);/* write the pen */bar(200,10,206,16);line(203,7,200,10);line(203,7,206,10);line(243,7,240,16);line(243,7,246,16);line(283,7,280,10);line(283,7,286,10);line(283,7,283,16);/* save the pen */wg=malloc(imagesize(200,7,206,16));rg=malloc(imagesize(240,7,246,16));vg=malloc(imagesize(280,7,286,16));fy=malloc(imagesize(200,7,206,16));getimage(200,7,206,16,wg);getimage(240,7,246,16,rg);getimage(280,7,286,16,vg);cleardevice();/* write the box */setcolor(YELLOW);rectangle(4,19,637,447);x1=x-3;y1=y+1;x2=x+3;y2=y+10;getimage(x1,y1,x2,y2,fy);putimage(x1,y1,vg,XOR_PUT);/* receive the command */for (;;) while (bioskey(1)==0);k=bioskey(0);putimage(x1,y1,fy,AND_PUT);if (((k0x00ff)|0x00)==0) k1=k0xff?0:k8; /* k1 is the specialkey value */elsek2=k0x00ff; /* k2 is the non-specialkey value */if (((k0x00ff)|0x00)==0) /* Special key */switch(k1) case 45:restorecrtmode();exit(0);case 72:if (y20) y=y-1;break;case 75:if (x5) x=x-1;break;case 77:if (x636) x=x+1;break;case 80:if (y446) y=y+1;break;case 71:if ((x5)(y20)) x=x-1; y=y-1;break;case 79:if ((x5)(y446)) x=x-1; y=y+1;break;case 73:if ((x636)(y20)) x=x+1; y=y-1;break;case 81:if ((x636)(y446)) x=x+1; y=y+1;break;x1=x-3; y1=y+1;x2=x+3; y2=y+10;getimage

文档评论(0)

junjun37473 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档