Практика программирования (Бейсик, Си, Паскаль)



         

Заливка площадных фигур "прозрачными" шаблонами - часть 2


Программа 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(); }




Содержание  Назад  Вперед