应用c语言编辑画图程序,应用C语言编辑画图程序

您可能感兴趣的话题:

C语言

核心提示:笔者在开发县级电网调度自动化系统的过程中,碰到一个要绘制电力系统一次接线图的问题

笔者在开发县级电网调度自动化系统的过程中,碰到一个要绘制电力系统一次接线图的问题.由于电力系统一次接线图比较复杂,用一般的编程方法来绘制比较困难,因此,笔者用C语言开发了一个手工绘制电力系统一次接线图的键盘绘图程序,使用该程序绘制的一次接线图符合用户需求,效果良好.

一、使用方法

程序中定义了几个特殊键:

\"V":画笔提起

\"W":开始画图

\"R":开始擦图

\"S":当前图形存入文件

\"E":调出已有文件

\"C":画圆

程序一运行,屏幕上出现一个黄色的边框来设定画图的区域,区域中间出现提起的画笔符号 ,当按下"W"键时,画笔符号变为 ,此时可移动方向键(上、下、左、右、左上、左下、右上、右下)来画图;当按下"R"键时,画笔符号变为 ,此时可移动方向键来擦图;在画图过程中,按下"C"键,可画出一个半径为20个象素点的圆;当结束画图时,按下"S"键,将画好的图形存盘;按下"E"键可调出已有的图形进行编辑.

二、源程序清单

# include \"graphics.h\"

# include \"stdio.h\"

# include \"fcntl.h\"

# include \"stdlib.h\"

main()

void save(),load();

void *wg,*rg,*vg,*fy;

int driver,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 (((k&0x00ff)|0x00)==0)

k1=k&0xff?0:k>>8; /* k1 is the specialkey value */

else

k2=k&0x00ff; /* k2 is the non-specialkey value */

if (((k&0x00ff)|0x00)==0) /* Special key */

switch(k1)

case 45:

restorecrtmode();

exit(0);

case 72:

if (y>20)

y=y-1;

break;

case 75:

if (x>5)

x=x-1;

break;

case 77:

if (x<636)

x=x+1;

break;

case 80:

if (y<446)

y=y+1;

break;

case 71:

if ((x>5)&&(y>20))

x=x-1;

y=y-1;

break;

case 79:

if ((x>5)&&(y<446))

x=x-1;

y=y+1;

break;

case 73:

if ((x<636)&&(y>20))

x=x+1;

y=y-1;

break;

case 81:

if ((x<636)&&(y<446))

x=x+1;

y=y+1;

break;

x1=x-3;

y1=y+1;

x2=x+3;

y2=y+10;

getimage(x1,y1,x2,y2,fy);

/* non-special key */[Page]

switch(k2)

case 118: /* \'v\' */

case 86: /* \'V\' */

putimage(x1,y1,vg,OR_PUT);

break;

case 119: /* \'w\' */

case 87: /* \'W\' */

putimage(x1,y1,wg,OR_PUT);

putpixel(x,y,c);

break;

case 114: /* \'r\' */

case 82: /* \'R\' */

putimage(x1,y1,rg,OR_PUT);

putpixel(x,y,BLACK);

break;

case 115: /* \'s\' */

case 83: /* \'S\' */

save(\"pic.dat\");

break;

case 101: /* \'e\' */

case 69: /* \'E\' */

load(\"pic.dat\");

break;

case 99: /*\'c\'*/

case 67: /*\'C\'*/

setcolor(RED);

circle(x,y,20);

break;

default:continue;

/* function for screen picture save

*/

void save(char *fname)

FILE *fp;

int i;

register long j;

char far *ptr;

fp=fopen(fname,\"wb\");

for(i=0;i<4;i++)

outportb(0x3CE,4);

outportb(0x3CF,i);

ptr=(char far *) 0xA0000000L;

for (j=0;j<38400L;j++)

putc(*ptr,fp);

ptr++;

fclose(fp);

outportb(0x3CF,0);

/* function for screen picture display

*/

void load(char *fname)

FILE *fp;

register int i;

int k4=1;

register long j;

char far *ptr;

fp=fopen(fname,\"rb\");

for (i=0;i<4;i++)

outportb(0x3C4,2);

outportb(0x3C5,k4);

ptr=(char far *)0xA0000000L;

for (j=0;j<38400L;j++)

*ptr=getc(fp);

ptr++;

k4*=2;

fclose(fp);

outportb(0x3C5,0xF);

三、结束语

该程序在Turbo C 2.0环境下运行通过,使用效果良好.可以根据具体需要,对该程序进行扩充,以增加绘图功能.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多少秒算长镜头_自从搞烘焙后,遇到烘焙模具换算,秒变数学渣...

从小学到大学我们学习的计量单位简直太多了&#xff0c;秒、米 、千克、开尔文、安培、坎德拉、摩尔......什么长度、体积、面积都知道怎么算&#xff0c;想想上学的时候我还是很强大的。 自从搞烘焙后&#xff0c;遇到烘焙模具换算&#xff0c;秒变数学渣...教程食谱中的一小勺…

怎样实现登录用户管理_如何编写程序实现图书管理系统里面的用户管理功能

上节课完成了库存管理功能。这节课来完成用户管理功能。编写用户管理功能用户管理主要是针对数据库表user进行维护&#xff0c;功能包括查询、新增、编辑和删除。特别注意&#xff0c;删除用户时要确保该用户的不存在订单记录。防止在查询订单时找不到对应的用户信息&#xff0…

rest开发_REST 101开发人员专用

rest开发本地代码执行 诸如C之类的高级语言中的函数将被汇编为Assembly中的过程 。 它们增加了一个间接级别&#xff0c;使我们不必考虑内存地址。 诸如Java之类的面向对象语言中的方法和多态性增加了另一种间接性 &#xff0c;使我们不必考虑一组相似功能的特定变体。 尽管…

c语言 交互式电子白板案例,交互式电子白板教学案例

交互式电子白板教学案例交互式电子白板教学案例——电子白板让修改习作不再难钢城一小 熊莉红前言——转眼间&#xff0c;一年的时间稍瞬即逝。2012年的暑假&#xff0c;我们学校在每一个班级都安装了交互式电子白板&#xff0c;面对着这一新兴的产物&#xff0c;老师们跃跃欲试…

matlabrvctools主要功能及实际应用_【从业必备 | 收藏】ISO26262功能安全标准白皮书:关键组成、软硬件认证、测试过程、合规认证工具...

ISO26262功能安全标准白皮书&#xff1a;关键组成、软硬件认证、测试过程&#xff0c;合规的认证工具目 录背景ISO 26262的关键部分硬件组件认证软件组件认证“在实践中证明”的证据应用于现有流程测试工具认证下一步1. 背景随着各行业引进一系列产品设计和测试的标准化流…

python语言中整型对应的英文_Python基本数据类型详细介绍(转)

1、空&#xff08;None&#xff09;表示该值是一个空对象&#xff0c;空值是Python里一个特殊的值&#xff0c;用None表示。None不能理解为0&#xff0c;因为0是有意义的&#xff0c;而None是一个特殊的空值。 2、布尔类型&#xff08;Boolean&#xff09; 在 Python中&#xf…

JVM体系结构:JVM中的执行引擎

各位读者好&#xff01; 在JVM系列的上一篇文章中&#xff0c;开发人员了解了虚拟机的ClassLoader和Runtime Data Areas组件。 本教程将帮助开发人员正确理解JVM中的执行引擎 。 1.简介 在继续之前&#xff0c;让我们看一下Java虚拟机及其基本特征。 1.1什么是Java虚拟机&…

简单c语言课设计题目,C语言课程设计题目

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼18、学生管理系统(限最多2人完成)使用下面的数据&#xff0c;用C设计一个简单的学籍管理系统&#xff0c;实现出最基本的功能。学生基本信息文件(A.TXT)及其内容&#xff1a;A.TXT文件不需要编程录入数据&#xff0c;可用文本编辑工…

python编程语言优缺点_原创001 第一次接触这个神奇而又无所不能的编程语言:Python...

***********************人生苦短&#xff0c;我用Python&#xff0c;不定期更新博客&#xff0c;小伙伴们记得关注******************** OK&#xff0c;说到Python这个语言&#xff0c;相信大家。对它还是有一点小陌生&#xff0c;对于编程语言来说&#xff0c;我们大家耳熟能…

android文件读写操作布局文件代码,android实现文件读写功能

本文实例为大家分享了android实现文件读写功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下读取&#xff1a;public static String _getJsonString(String fileName)throws IOException {if ((fileName null) || fileName.isEmpty()) {return "";}Str…

ese如何实现支付 nfc_海运费如何实现快捷支付?答案有了

快捷支付时代&#xff0c;海运费支付能否更简单&#xff1f;“航运在线通”给出了答案。1月9日&#xff0c;中国银行天津市分行举行了“航运在线通”产品发布会。天津市商务局、天津市金融局、天津市税务局、中国人民银行、国家外汇管理局天津市分局、中国银行总分行相关领导及…

smtplib 抄送邮件_用Python收发电子邮件

电子邮件是最古老的互联网服务之一&#xff0c;发明于1969年&#xff0c;它已经50岁了&#xff01;它并不要求收信人发信人同时连接网络&#xff0c;邮件存放于服务器&#xff0c;所以至今在企业内部还在大量使用。而且它是开放协议&#xff0c;没有被某大公司垄断。我们完全可…

带有JUnit 5支持的Ant 1.10.3发布

我们今天刚刚发布了 1.9.11和1.10.3版本的Ant。 这些下载位于Ant项目的下载页面上 。 这两个版本主要是错误修复版本&#xff0c;尤其是1.9.11版本。 由于几个原因&#xff0c;1.10.3版本是重要的版本。 先前的1.10.2版本无意中引入了许多更改&#xff0c;这些更改导致Ant任务中…

android 号码查联系人,Android联系人查询

我在查询电话簿联系人时遇到问题.我需要做的是获取同时输入电话和电子邮件或特定类型的联系人列表.基本上是这样的&#xff1a;public static final String SELECTION "("ContactsContract.Contacts.HAS_PHONE_NUMBER "1) OR " RawContacts.ACCOUNT_TYPE …

console.log()不显示结果_RNA结合蛋白与RNA的缠绵故事,教你不做实验发文章

解螺旋公众号陪伴你科研的第1869天继续学习如何不做实验发文章RNA结合蛋白是(RNA binding protein&#xff0c;RBP)细胞中一类可以识别特殊的RNA结合域与RNA互作&#xff0c;并参与RNA剪切、转运、序列编辑、胞内定位及翻译控制等多种转录后的调控过程中。既然RBP功能这么重要&…

watch gt 鸿蒙,鸿蒙登陆第三站:第一枚Harmony手表亮相?华为Watch GT 2e首发

作者|蒋杰升简称|单蒋让你们荡起昨天(3月19日)中午&#xff0c;华为官方放出两款华为WatchGT 2全新配色&#xff1a;玫瑰金、冰雪白。而前一天则是被猜测新增石墨黑、火山红、薄荷绿三种配色。至此&#xff0c;华为WatchGT 2改款Watch GT 2e&#xff0c;定于3月26日发布已无悬念…

JPA技巧:避免N + 1选择问题

介绍 诸如JPA的ORM框架通过帮助我们在对象<->关系数据映射期间避免了很多样板代码&#xff0c;从而简化了我们的开发过程。 但是&#xff0c;它们还会给表带来一些其他问题&#xff0c;N 1是其中之一。 在本文中&#xff0c;我们将简短地探讨该问题以及避免这些问题的一…

python设计模式有哪些_设计模式教程

设计模式是软件设计中常见问题的典型解决方案。它们就像能根据需求进行调整的预制蓝图&#xff0c;可用于解决代码中反复出现的设计问题。 设计模式与方法或库的使用方式不同&#xff0c;你很难直接在自己的程序中套用某个设计模式。模式并不是一段特定的代码&#xff0c;而是解…

一建机电实务教材电子版_必背!一建《机电实务》高频考点,每日一背

本文部分来自学霸笔记&#xff0c;点击链接关注公众号下载【工业管道的施工程序】1.管道施工前应具备的开工条件&#xff1a;1.工程设计图纸及其他技术文件完整齐全&#xff0c;已按程序进行了工程交底和图纸会审。2.施工组织设计和施工方案已批准&#xff0c;并已进行了技术和…

鸿蒙开发者社区入口,鸿蒙OS 社区

OpenHarmony community欢迎来到OpenHarmony社区&#xff01;Community仓库用于管理OpenHarmony社区治理、开发者贡献指南、开发者贡献协议、社区交流等内容。社区治理组织架构社区交流OpenHarmony社区通过项目管理委员会( Project Management Committee)管理OpenHarmony社区。请…