Конференция "Media" » Помогите найти ошибку
 
  • NieL (02.03.08 21:13) [0]
    Господа программисты, помогите найти ошибку (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;

 
Конференция "Media" » Помогите найти ошибку
Есть новые Нет новых   [133929   +472][b:0][p:0.002]