Перейти к содержимому



Закраска области, заданной цветом границы


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 admin

admin

    Администратор

  • Администраторы
  • 76 сообщений

Отправлено 19 Март 2011 - 11:23

const BorderColor : integer = WHITE; Color : integer = GREEN; 
Function LineFill(x, y, dir, PrevX1, PrevXr: integer):Integer; 
Var x1,xr,c:Integer;
Begin x1:=x; xr:=x;  
	 repeat  dec(x1); c:=getpixel(x1,y); until (c = BorderColor) OR (c = Color);
	 repeat  inc(xr); c:=getpixel(xr,y); until (c = BorderColor) OR (c = Color);
	 inc(x1);  inc(xr); line(x1,y,xr,y,Color);
	 x:=x1;
	 while x1<=xr do begin
			c := getpixel(x, y + dir); 
			if ( c <> BorderColor )  AND ( c <> Color )  then x:=LineFill(x,y+dir,dir,x1,xr);
			inc(x);
	 end;
	 x:=x1;
	 while x<=PrevX1-1 do begin
			c := getpixel(x, y - dir); 
			if ( c <> BorderColor)  AND (c <> Color) then x:=LineFill(x,y-dir,-dir,x1,xr);
			inc(x);
	 end;
	 x := PrevXr
	 while x<=xr-1 do begin
			c := getpixel(x, y - dir);
			if ( c <> BorderColor ) AND ( c <> Color)  then x:=LineFill(x,y-dir,-dir,x1,xr);
			inc(x);
	 end;
	 LineFill := xr;
End;





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей

Рейтинг@Mail.ru