在开发县级电网调度自动化系统的过程中,碰到一个要绘制电力系统一次接线图的问题。由于电力系统一次接线图比较复杂,用一般的编程方法来绘制比较困难,因此,用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 */
新闻热点
疑难解答