用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

在屏幕上输出一个位图

2012-11-13 作者: 程序猿style举报

[c]代码库

#include <graphics.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 

#define ARROW_SIZE 10 

void draw_arrow(int x, int y); 

int main(void) 
{ 
   /* request autodetection */ 
   int gdriver = DETECT, gmode, errorcode; 
   void *arrow; 
   int x, y, maxx; 
   unsigned int size; 

   /* initialize graphics and local variables */ 
   initgraph(&gdriver, &gmode, ""); 

   /* read result of initialization */ 
   errorcode = graphresult(); 
   if (errorcode != grOk)  /* an error occurred */ 
   { 
      printf("Graphics error: %s\n", grapherrormsg(errorcode)); 
      printf("Press any key to halt:"); 
      getch(); 
      exit(1); /* terminate with an error code */ 
   } 

   maxx = getmaxx(); 
   x = 0; 
   y = getmaxy() / 2; 

   /* draw the image to be grabbed */ 
   draw_arrow(x, y); 

   /* calculate the size of the image */ 
   size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE); 

   /* allocate memory to hold the image */ 
   arrow = malloc(size); 

   /* grab the image */ 
   getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow); 

   /* repeat until a key is pressed */ 
   while (!kbhit()) 
   { 
      /* erase old image */ 
      putimage(x, y-ARROW_SIZE, arrow, XOR_PUT); 

      x += ARROW_SIZE; 
      if (x >= maxx) 
          x = 0; 

      /* plot new image */ 
      putimage(x, y-ARROW_SIZE, arrow, XOR_PUT); 
   } 

   /* clean up */ 
   free(arrow); 
   closegraph(); 
   return 0; 
} 

void draw_arrow(int x, int y) 
{ 
   /* draw an arrow on the screen */ 
   moveto(x, y); 
   linerel(4*ARROW_SIZE, 0); 
   linerel(-2*ARROW_SIZE, -1*ARROW_SIZE); 
   linerel(0, 2*ARROW_SIZE); 
   linerel(2*ARROW_SIZE, -1*ARROW_SIZE); 
}


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...