forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Заливка фигуры цветом ??? (http://forum.boolean.name/showthread.php?t=7447)

bms2008 15.12.2008 06:20

Заливка фигуры цветом ???
 
Народ, подскажите, кто знает.
Как быстро залить произвольную фигуру, ограниченную линиями цвета с1, заданным цветом с2, начиная с указанной точки (x,y), находящейся внутри фигуры? :crazy:

Я делал с помощью библиотеки Lib_alpha, где есть GetColor и рекурсии, но фигуру 120x300 это ТАК долго закрашивает - я пока ждал завершения программы поседел и умер 2 раза :wallbash: Потоки тоже не на много улучшили дело...

Моя процедура:

Код:

.....
w:=getwidth;
h:=getheight;
SetColor(255, 255, 255); //цвет заливки
Fill(xm,ym,c1);  //c1 - цвет ARGB ограничивающих линий
.......

Procedure Fill(x,y,col1:integer);
var
        cc,cc1,cc2,cc3,cc4:integer;
begin
cc:=GetColor(im1,x,y);
cc1:=GetColor(im1,x-1,y);
cc2:=GetColor(im1,x+1,y);
cc3:=GetColor(im1,x,y-1);
cc4:=GetColor(im1,x,y+1);

                       

                        if (cc <> col1) then       
                        begin                               
                                Plot(x, y);
                                im1:=ImageFromCanvas(0,0,w,h);                               
                        end;
                               
                        if (cc1 <> col1) then       
                        begin                               
                                Plot(x-1, y);
                                im1:=ImageFromCanvas(0,0,w,h);                               
                                Fill(x-1,y, col1);
                        end;
                        if (cc2  <> col1)  then         
                        begin
                                Plot(x+1, y);
                                im1:=ImageFromCanvas(0,0,w,h);
                                Fill(x+1,y, col1);
                        end;
                        if (cc3  <> col1)  then         
                        begin
                                Plot(x, y-1);
                                im1:=ImageFromCanvas(0,0,w,h);
                                Fill(x,y-1, col1);
                        end;
                        if (cc4  <> col1)  then         
                        begin
                                Plot(x, y+1);
                                im1:=ImageFromCanvas(0,0,w,h);
                                Fill(x,y+1, col1);
                        end;
                       
end;


ger1234567 15.12.2008 17:09

Ответ: Заливка фигуры цветом ???
 
BMS - это Black mesa source 2008 правельней 2009


Часовой пояс GMT +4, время: 07:33.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot