<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. C語言

    C語言編輯畫圖程序的技巧

    時間:2025-02-16 07:10:57 C語言 我要投稿
    • 相關推薦

    C語言編輯畫圖程序的技巧

      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 */

      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環境下運行通過,使用效果良好.可以根據具體需要,對該程序進行擴充,以增加繪圖功能.

    【C語言編輯畫圖程序的技巧】相關文章:

    c語言中怎么畫圖11-06

    如何實現C語言畫圖教程08-08

    C語言如何實現畫圖教程08-19

    C語言程序試題04-26

    c語言入門經典程序08-01

    C語言經典程序題09-17

    c語言鏈接程序08-26

    C語言程序介紹08-23

    C語言程序實例10-10

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人