Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.03.2008, 20:43
NeiL NeiL вне форума
Прохожий
 
Регистрация: 29.11.2007
Сообщения: 28
Репутация: 10
По умолчанию Помогите найти ошибку

Господа программисты, помогите найти ошибку (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;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter