void far getimage(int left, int top, int right, int bottom, void far *buf)
Прототип:
Описание:
Функция getimage() копирует часть графического экрана с левым верхним углом в точке left, top и с правым нижним углом в точке с координатами right, bottom в область памяти, на которую указывает параметр buf.
Для того, чтобы определить необходимое число байт для хранения изображения, надо использовать функцию imagesize(). Изображение, сохраненное с использованием функции getimage(), может быть выведено на экран с использованием функции putimage().
Пример:
Следующая программа копирует прямоугольник с двумя диагональными линиями в новое место на экране:
/* данная программа демонстрирует, как можно двигать изображение с помощью getimage(), imagesize() и putimage()
*/
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
void box (int, int, int, int, int);
int main(void)
{
int driver, mode;
unsigned size;
void *buf;
driver = DETECT; /* автоопределение */
mode = 0;
initgraph(&driver, &mode, "c:\\bc5\\bgi");
box (20, 20, 200, 200, 15);
setcolor(RED);
line(20, 20, 200, 200);
setcolor(GREEN);
line(20, 200, 200, 20);
getch();
/* перемещение изображения */
/* сначала получение размера изображения */
size = imagesize(20, 20, 200, 200);
if (size != 0xffff) { /* выделение памяти для изображения */
buf = malloc(size);
if(buf) {
getimage(20, 20, 200, 200, buf);
putimage(100, 100, buf, COPY_PUT);
putimage(300, 50, buf, COPY_PUT);
}
}
outtext("Press a key.");
getch ();
restorecrtmode();
return 0;
}
/* вывод прямоугольника по имеющимся координатам двух углов */
void box (int startx, int starty, int endx, int endy, int color)
{
setcolor(color);
line(startx, starty, startx, endy);
line (startx, starty, endx, starty);
line(endx, starty, endx, endy);
line(endx, endy, startx, endy);
}
/* данная программа демонстрирует, как можно двигать изображение с помощью getimage(), imagesize() и putimage()
*/
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
void box (int, int, int, int, int);
int main(void)
{
int driver, mode;
unsigned size;
void *buf;
driver = DETECT; /* автоопределение */
mode = 0;
initgraph(&driver, &mode, "c:\\bc5\\bgi");
box (20, 20, 200, 200, 15);
setcolor(RED);
line(20, 20, 200, 200);
setcolor(GREEN);
line(20, 200, 200, 20);
getch();
/* перемещение изображения */
/* сначала получение размера изображения */
size = imagesize(20, 20, 200, 200);
if (size != 0xffff) { /* выделение памяти для изображения */
buf = malloc(size);
if(buf) {
getimage(20, 20, 200, 200, buf);
putimage(100, 100, buf, COPY_PUT);
putimage(300, 50, buf, COPY_PUT);
}
}
outtext("Press a key.");
getch ();
restorecrtmode();
return 0;
}
/* вывод прямоугольника по имеющимся координатам двух углов */
void box (int startx, int starty, int endx, int endy, int color)
{
setcolor(color);
line(startx, starty, startx, endy);
line (startx, starty, endx, starty);
line(endx, starty, endx, endy);
line(endx, endy, startx, endy);
}