C语言编辑中的绘图程序技能

电脑杂谈  发布时间:2020-04-02 05:11:09  来源:网络整理

洞洞板 画图_c ++画图程序_c 画图板

在县级电网调度自动化系统的开发过程中,我们遇到了绘制电力系统一次性接线图的问题. 由于电源系统的主要接线图更加复杂,因此使用通用的编程方法来绘制它更加困难. 因此c 画图板,用C语言开发了用于手动绘制电源系统主要接线图的键盘绘制程序. 而且效果很好. 以下编辑为您分享了一些技巧,希望能帮助您解决难题.

I. 使用方法

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

\“ V”: 拉起

\“ W”: 开始绘制

\“ R”: 开始删除图片

\“ S”: 将当前图形保存到文件

\“ E”: 调用现有文件

\“ C”: 画一个圆

程序运行后,屏幕上会出现一个边框以设置绘图区域. 凸起的笔形符号出现在该区域的中间. 当按下“ W”键时,笔符号改变. 这时,您可以移动箭头键((上,下,左,右,左上,左下,右上,右下)绘制图片;按“ R”键时,笔符号会改变,然后可以移动箭头键以删除图片;在绘制过程中,请按“ C”键绘制半径为20像素的圆. 完成绘制后,请按“ S”键保存绘制的图形;按“ E”键调出现有图形进行编辑.

第二个源程序列表

#include \“ graphics.h \”

#include \“ stdio.h \”

#include \“ fcntl.h \”

#include \“ stdlib.h \”

主要()

void save(),load();

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

int驱动程序,模式;

int c =红色;

int x = 320c 画图板,y = 225;

int x1,y1,x2,y2;

int k,k1,k2;

/ *初始化绘图仪* /

detectgraph(&驱动程序,&模式);

initgraph(&驱动程序,&模式,\“ c: \\ tc \”);

/ *书写笔* /

bar(200,10,206,16);

line(203,7,200,10);

第(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);

洞洞板 画图_c 画图板_c ++画图程序

/ *保存笔* /

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();

/ *填写框* /

setcolor();

矩形(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);

/ *接收命令* /

对于(;;)

while(bioskey(1)== 0);

k =生物钥匙(0);

putimage(x1,y1,fy,AND_PUT);

如果((((k&0x00ff)| 0x00)== 0)

k1 = k&0xff? 0: k >> 8; / * k1是特殊键值* /

其他

k2 = k&0x00ff; / * k2是非特殊键值* /

如果((((k&0x00ff)| 0x00)== 0)/ *特殊键* /

开关(k1)

案例45:

restorecrtmode();

退出(0);

案例72:

如果(y> 20)

y = y-1;

洞洞板 画图_c 画图板_c ++画图程序

休息;

案例75:

如果(x> 5)

x = x-1;

休息;

案例77:

如果(x <636)

x = x + 1;

休息;

案例80:

如果(y <446)

y = y + 1;

休息;

案例71:

如果(((x> 5)&&(y> 20))

x = x-1;

y = y-1;

休息;

案例79:

如果((x> 5)&&(y <446))

x = x-1;

y = y + 1;

休息;

案例73:

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

x = x + 1;

y = y-1;

休息;

案例81:

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

x = x + 1;

y = y + 1;

休息;

x1 = x-3;

y1 = y + 1;

洞洞板 画图_c ++画图程序_c 画图板

x2 = x + 3;

y2 = y + 10;

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

/ *非特殊键* / [页]

开关(k2)

案例118: / * \'v \'* /

案例86: / * \'V \'* /

putimage(x1,y1,vg,OR_PUT);

休息;

案例119: / * \'w \'* /

案例87: / * \'W \'* /

putimage(x1,y1,wg或OR_PUT);

putpixel(x,y,c);

休息;

案例114: / * \'r \'* /

案例82: / * \'R \'* /

putimage(x1,y1,rg,OR_PUT);

putpixel(x,y,BLACK);

休息;

案例115: / * \'s \'* /

案例83: / * \'S \'* /

保存(\“ pic.dat \”);

休息;

案例101: / * \'e \'* /

案例69: / * \'E \'* /

加载(\“ pic.dat \”);

休息;

案例99: / * \'c \'* /

案例67: / * \'C \'* /

setcolor(红色);

圆(x,y,20);

休息;

默认: 继续;

/ *用于保存屏幕图像的功能

* /

洞洞板 画图_c ++画图程序_c 画图板

无效保存(char * fname)

文件* fp;

int i;

注册long j;

char far * ptr;

fp = fopen(fname,\“ wb \”);

对于(i = 0; i <4; i ++)

输出(0x3CE,4);

输出(0x3CF,i);

ptr =(字符远*)0xA0000000L;

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

putc(* ptr,fp);

ptr ++;

fclose(fp);

输出(0x3CF,0);

/ *用于屏幕图像显示的功能

* /

空载(char * fname)

文件* fp;

注册int i;

int k4 = 1;

注册long j;

char far * ptr;

fp = fopen(fname,\“ rb \”);

对于(i = 0; i <4; i ++)

输出(0x3,2);

输出(0x3C5,k4);

ptr =(字符远*)0xA0000000L;

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

* ptr = getc(fp);

ptr ++;

k4 * = 2;

fclose(fp);

输出(0x3C5,0xF);

三,结论

该程序在Turbo C 2.0环境下运行,效果很好. 您可以根据自己的特定需求扩展程序以增加绘图功能.

来源: QQ空间克隆


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-160882-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 张怡
        张怡

        我官网买的米2差不多充满两次是可以的

      • 欧阳光祖
        欧阳光祖

        #杨洋2015金投赏##杨洋轻奢young#羊毛携手杨洋

      • 张慧潜
        张慧潜

        赶紧抢

      热点图片
      拼命载入中...