函数名: p_w_picpathsize

功能: 返回保存位图像所需的字节数

用法: unsigned far p_w_picpathsize(int left, int top, int right, int bottom);

程序例:

#include

#include

#include

#include

#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 p_w_picpath to be grabbed */

draw_arrow(x, y);

/* calculate the size of the p_w_picpath */

size = p_w_picpathsize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE);

/* allocate memory to hold the p_w_picpath */

arrow = malloc(size);

/* grab the p_w_picpath */

getp_w_picpath(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow);

/* repeat until a key is pressed */

while (!kbhit())

{

/* erase old p_w_picpath */

putp_w_picpath(x, y-ARROW_SIZE, arrow, XOR_PUT);

x += ARROW_SIZE;

if (x >= maxx)

x = 0;

/* plot new p_w_picpath */

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

}