This shows you the differences between two versions of the page.
— |
c:graphics.h:imagesize [2024/02/16 01:05] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== imagesize ===== | ||
+ | |||
+ | |||
+ | ====Syntax of imagesize ==== | ||
+ | <code c> | ||
+ | #include <graphics.h> | ||
+ | unsigned imagesize(int left, int top, int right, int bottom); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Description of imagesize ==== | ||
+ | <code c> | ||
+ | imagesize determines the size of the memory area required to store a bit | ||
+ | image. If the size required for the selected image is greater than or | ||
+ | equal to 64K - 1 bytes, imagesize returns 0xFFFF (-1). | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== Example of imagesize ==== | ||
+ | <code c> | ||
+ | /* imagesize example */ | ||
+ | |||
+ | #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); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ==== See also ==== | ||
+ | [[getimage]] | ||
+ | [[putimage]] | ||
+ | |||
+ | |||
+ | ===== output of imagesize example ===== | ||
+ | |||
+ | no output of example at the moment | ||
+ | do not hesitate and add it... | ||
+ | |||
+ | |||