User Tools

Site Tools


c:graphics.h:getimage

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

c:graphics.h:getimage [2015/05/06 23:06]
c:graphics.h:getimage [2024/02/16 01:05] (current)
Line 1: Line 1:
 +===== getimage =====
 +
 +
 +====Syntax of getimage ==== 
 + <code c>
 +#include <graphics.h>
 +void getimage(int left, int top, int right, int bottom, void *bitmap);
 +  </code>
 +
 +
 +==== Description of getimage ==== 
 +<code c>
 +getimage copies an image from the screen to memory.
 +left, top, right, and bottom define the screen area to which the
 +rectangle is copied. bitmap points to the area in memory where the bit
 +image is stored. The first two words of this area are used for the width
 +and height of the rectangle; the remainder holds the image itself.
 +</code>
 +
 +
 +==== Example of getimage ====
 +<code c>
 +/* getimage example */
 +
 +#include <graphics.h>
 +#include <stdlib.h>
 +#include <stdio.h>
 +#include <conio.h>
 +#include <alloc.h>
 +
 +void save_screen(void *buf[4]);
 +void restore_screen(void *buf[4]);
 +
 +int maxx, maxy;
 +int main(void)
 +{
 +   int gdriver=DETECT, gmode, errorcode;
 +   void *ptr[4];
 +
 +   /* autodetect the graphics driver and mode */
 +   initgraph(&gdriver, &gmode, "");
 +   errorcode = graphresult();  /* check for any errors */
 +   if (errorcode != grOk) {
 +printf("Graphics error: %s\n", grapherrormsg(errorcode));
 +
 +printf("Press any key to halt:");
 +getch();
 +exit(1);
 +   }
 +
 +   maxx = getmaxx();
 +   maxy = getmaxy();
 +
 +   /* draw an image on the screen */
 +   rectangle(0, 0, maxx, maxy);
 +   line(0, 0, maxx, maxy);
 +   line(0, maxy, maxx, 0);
 +   save_screen(ptr);     /* save the current screen */
 +   getch();  /* pause screen */
 +   cleardevice();  /* clear screen */
 +   restore_screen(ptr);  /* restore the screen */
 +   getch();  /* pause screen */
 +
 +   closegraph();
 +   return 0;
 +}
 +
 +void save_screen(void *buf[4])
 +{
 +   unsigned size;
 +   int ystart=0, yend, yincr, block;
 +   yincr = (maxy+1) / 4;
 +   yend = yincr;
 +
 +   /* get byte size of image */
 +   size = imagesize(0, ystart, maxx, yend);
 +   for (block=0; block<=3; block++) {
 +if ((buf[block] = farmalloc(size)) == NULL) {
 +   closegraph();
 +   printf("Error: not enough heap space in save_screen().\n");
 +   exit(1);
 +}
 +     getimage(0, ystart, maxx, yend, buf[block]);
 +
 +     ystart = yend + 1;
 +     yend += yincr + 1;
 +   }
 +}
 +
 +void restore_screen(void *buf[4])
 +{
 +   int ystart=0, yend, yincr, block;
 +   yincr = (maxy+1) / 4;
 +   yend = yincr;
 +   for (block=0; block<=3; block++) {
 +putimage(0, ystart, buf[block], COPY_PUT);
 +farfree(buf[block]);
 +ystart = yend + 1;
 +
 +yend += yincr + 1;
 +   }
 +}
 +</code>
 +
 +
 +==== See also ====
 +[[getpixel]]
 +[[imagesize]]
 +[[putimage]]
 +
 +
 +===== output of getimage example ===== 
 +
 +    no output of example at the moment
 +    do not hesitate and add it...  
 +
 +
  

on the occasion of the current invasion of Russia in Ukraine

Russian Stop this War

Impressum Datenschutz