📄 colorare.cpp
字号:
#include <graphics.h>
#include <conio.h>
#include "Queue.h"
Queue Q;
Pozitie directii[4] = { {-1,0}, {0,-1}, {1,0}, {0,1} };
void coloreaza_domeniu(Pozitie pozinit, int color)
{
int i;
Pozitie p, pi;
int culoarea_domeniului = getpixel(pozinit.x,pozinit.y);
initQueue(Q);
put(Q,pozinit);
putpixel(pozinit.x, pozinit.y, color);
while(!isEmpty(Q)){
p = get(Q);
for(i=0; i<4; i++){
pi.x = p.x + directii[i].x;
pi.y = p.y + directii[i].y;
if( pi.x>=0 && pi.x<=getmaxx() &&
pi.y>=0 && pi.y<=getmaxy() &&
culoarea_domeniului==getpixel(pi.x,pi.y))
{
put(Q,pi);
putpixel(pi.x,pi.y,color);
}
}
}
}
void init_domeniu()
{ // initializeaza un domeniu pentru testarea algoritmului
setfillstyle(SOLID_FILL,WHITE);
bar(100,100,400,150);
bar(75,30,115,300);
bar(30,30,300,45);
bar(350,100,400,300);
bar(200,275,400,300);
bar(200,200,250,300);
fillellipse(250,60,75,16);
}
Pozitie pozitia_initiala()
{ // returneaza pozitia de la care se incepe umplerea domeniului
Pozitie temp;
temp.x=200;
temp.y=125;
return temp;
}
void main()
{
int grd=DETECT, grm;
Pozitie p;
int color;
initgraph(&grd,&grm,"G:\\BC\\BGI");
init_domeniu();
coloreaza_domeniu(pozitia_initiala(), RED);
getch();
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -