<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            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

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院