CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
putimage
putimage
Функция Выводит на экран битовый образ. Синтаксис #include <graphics.h> 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 выполнит операцию ИЛИ над уже находящемся на экране образом и т.д. Возвращаемое Нет. значение Переносимость Функция уникальна для Borland C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим. Функция не совместима с Windows. Смотрите также getimage, imagesize, putpixel, setvisualpage. Пример: #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) { 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",grapherrormessage(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); }