Программа 8_12.с
/* "Прозрачный шаблон"*/
#include <graphics.h>
#include <stdlib.h>
#include <alloc.h>
main () {
int gd=0,gm;
int cl,fon;
char q,
patl[] = {0x81,0x42,0x24,0x18,0x00,0x00,0x00, 0x00},
pat2[] = {0x7E,0xBD,0xDB,0xE7,0xFF,0xFF,0xFF, 0xFF};
int xyl[]={0,0,300,0,300,300,0,300} ;
long k;
char far *pl,*p2;
initgraph(Sgd,&gm,"") ;
k=imagesize(10,10,110,110) ;
pl=farmalloc(k); /* Запрос памяти */
p2=farmalloc(k);
m:
fon=random(15)+1;
ml:
cl=random(15)+1;
if((cl==fon)) goto ml; /*3апоминание битового образа шаблона в заливаемой области*/
setfillstyle(12,0);
setfillpattern(patl,cl);
bar(10,10,110,110);
getimage(10,10,110,110,pi); /*3апоминание битового образа антишаблона V
setfillstyle(12,0);
setfillpattern(pat2,15);
bar(10,10,110,110);
getimage(10,10,110,110,p2); /*Формирование изображения */
setfillstyle(l,fon);
fillpoly(4,xyl);
setcolor (4);
circle(60,60,30) ; /* Вырезание профиля шаблона */
putimage(10,10,р2,AND_PUT); /*Вклеивание "прозрачного" шаблона*/
putimage(10, 10,pl,X0R_PUT) ; /*3аливка обьмным непрозрачным шаблоном*/
setcolor (4);
circle(240,240,30);
setfillstyle(12,0);
setfillpattern(patl,cl);
bar(190,190,290,290); /*0жидание нажатия клавиши. Выход по нажатию Esc*/
q=getch();
if(q != 0xlb) goto m;
closegraph(); }