Putimage
putimage
Функция Выводит на экран битовый образ.
Синтаксис #include
void far putimage(int left,int top, void far *bitmap,int op);
Файл, содержащий graphics.h прототип
Описание putimage помещает битовый образ, ранее со- храненный с помощью getimage, обратно на экран, где левый верхний угол образа находится в точке (left,top). bitmap указывает область памяти в ко- тором хранится требуемый образ.
Параметр op определяет составной оператор, кото- рый определяет вычисление цвета для каждой точ- ки (pixel) экрана, основываясь на существующей уже на экране точке и соответствующей точке обра- за в памяти.
Перечень значений putimage_op (как определено в graphics.h) дает названия следующим операциям:
------------------------------------------- ИМЯ ЗНАЧ. ОПИСАНИЕ ------------------------------------------- COPY_PUT 0 копия XOR_PUT 1 исключающее "или" OR_PUT 2 "или" AND_PUT 3 " и " NOT_PUT 4 копия источника с инверсией -------------------------------------------
Другими словами, COPY_PUT скопирует побитный об- раз источника на экран, XOR_PUT выполнит операцию ИСКЛЮЧАЮЩЕЕ ИЛИ над уже находящемся на экране об- разом, OR_PUT выполнит операцию ИЛИ над уже нахо- дящемся на экране образом и т.д.
Возвращаемое Нет. значение
Переносимость Функция уникальна для Turbo C++. Она работает только на компьютерах IBM PC и совместимых с ни- ми, оснащенных дисплейными адаптерами, поддержи- вающими графический режим.
Смотрите также
Пример:
#include
#include
#include
#include
#define ARROW_SIZE 10
void draw_arrow(int x,int y);
int main(void) { int graphdriver = DETECT, gmode, errorcode; void *arrow; int x,y,maxx; unsigned int size;
/* инициализация драйвера и локальных переменных */ initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */ errorcode = graphresult(); if(errorcode != grOk) /* если ошибка */ { printf("Ошибка :%s\n",grapherrormsg(errorcode)); printf("Для останова нажмите любую клавишу\n"); getch(); exit(1); /* завершение с кодом ошибки */ } maxx = getmaxx(); x = 0; y = getmaxy()/2; /* нарисовать перемещаемый объект */ draw_arrow(x,y); /* определить размер памяти, для хранения изображения */ size = imagesize(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE); /* выделить память */ arrow = malloc(size); /* взять изображение */ getimage(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE,arrow); /* продолжать, пока не будет нажата клавиша */ while(!kbhit()) { /* стереть старый образ */ putimage(x,y-ARROW_SIZE,arrow,XOR_PUT); x += ARROW_SIZE; if(x >= maxx) x = 0; /* нарисовать изображение */ putimage(x,y-ARROW_SIZE,arrow,XOR_PUT); }
free(arrow); closegraph(); return 0; }
void draw_arrow(int x,int y) { /* нарисовать на экране стрелку */ 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); }