void far putimage(int x, int y, void far *buf, int op)
Прототип:
Описание:
Функция putimage() копирует изображение, предварительно сохраненное с помощью функции getimage() в памяти по адресу, заданному параметром buf. Изображение копируется на экран, начиная с точки с координатами х,у. Значение параметра ор определяет, каким именно образом изображение будет представлено на экране. Его допустимые значения перечислены ниже:
Название | Величина | Значение |
---|---|---|
COPY_PUT | 0 | Копирование как есть |
XOR_PUT | 1 | Исключающее ИЛИ с целевой областью |
OR_PUT | 2 | ИЛИ с целевой областью |
AND_PUT | 3 | И с целевой областью |
NOT_PUT | 4 | Инвертировать исходное изображение |
Пример:
Следующая программа демонстрирует использование функций getimage(), imagesize() и 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);
rectangle(startx, starty, endx, 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);
rectangle(startx, starty, endx, endy);
}