Господа программисты, помогите найти ошибку (graphics32).
Процедура особым способом проверяет пикселы bitmapa и в случае если цвет пикселя bitmapa совпадает с выбранным цветом (FColor) тогода закрашиваем его (пиксел) в красный цвет ( цвет с которым будем сравнивать храниться в переменной FColor (кстати цвет грузится в переменную из этого же bitmapa)).
Исходя из этого получается что хотябы один пиксел в любом случае будет совпадать. Но почемуто этого не происходит. Помогите решить проблему.
procedure RecursiveFill(AX, AY: Integer);
procedure NeedFillPixel(X, Y: Integer);
var
B: Integer;
P: PPoint;
C: TColor32;
begin
B := Y * BitsWidth + X;
if (X >= 0) and (X < BitsWidth) and
(Y >= 0) and (Y < BitsHeight)
and (BitMask[B] = #00) then
begin
BitMask[B] := #01;
C := NewBitmap.Pixel[X, Y];
if RGB(TColor32Entry(FColor).R, TColor32Entry(FColor).G, TColor32Entry(FColor).B)
= RGB(TColor32Entry(C).R
,TColor32Entry(C).G, TColor32Entry(C).B) then
begin
NewBitmap.Pixel[X, Y] := clRed32;
GetMem(P, SizeOf(TPoint));
P^.X := X;
P^.Y := Y;
Stack.Push(P);
end;
end;
end;
var
P: PPoint;
begin
NeedFillPixel(AX, AY);
with Stack do
while Count > 0 do
begin
P := PPoint(Pop(True));
try
with P^ do
begin
NeedFillPixel(X + 1, Y);
NeedFillPixel(X, Y + 1);
NeedFillPixel(X - 1, Y);
NeedFillPixel(X, Y - 1);
end;
finally
FreeMem(P, SizeOf(TPoint));
end;
end;
end;