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