Описание функций Си

       

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); }



Содержание раздела