麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 編程設計 > 正文

C語言編輯中應用畫圖程序技巧

2020-07-14 13:20:22
字體:
來源:轉載
供稿:網友

  在開發縣級電網調度自動化系統的過程中,碰到一個要繪制電力系統一次接線圖的問題。由于電力系統一次接線圖比較復雜,用一般的編程方法來繪制比較困難,因此,用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環境下運行通過,使用效果良好.可以根據具體需要,對該程序進行擴充,以增加繪圖功能.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久网站热最新地址 | 黄色免费小网站 | 久久久久国产精品久久久久 | 欧美在线观看视频一区 | 夜间福利网站 | av手机在线电影 | 美女又黄又www | 亚洲精品一区二区三区在线看 | 久久激情国产 | 久久网站热最新地址4 | 成人综合在线观看 | 久久经典 | 一本色道久久综合亚洲精品图片 | 香蕉久久久久 | 日本不卡一区二区三区在线观看 | av在线大全 | 斗破苍穹在线免费 | 一区二区三视频 | 成人在线视频免费播放 | 男男啪羞羞视频网站 | 日本高清一级片 | 鲁丝片一区二区三区免费入口 | 精品一区二区久久久久久久网精 | 美女黄色毛片免费看 | h视频免费看 | 日本一区二区不卡高清 | 嗯啊羞羞视频 | 粉色视频污| av在线成人 | 国产成年人小视频 | 免费观看高清视频网站 | av免费在线观看国产 | 欧美三级欧美成人高清www | 欧美成年人视频 | www.guochanav.com| 色七七久久影院 | 污视频在线免费播放 | 成人性生活视频 | 色a综合| 久久成人精品视频 | 精品乱码久久久久 |