В процессе начальной разработки (Без малейших признаков оптимизации просто по принципу "абы начать писать" )
Написал простейший кусок кода ...
- Код: Выделить всё
Image2.Picture.Clear;
Image2.Picture.Bitmap.Canvas.Brush.Color:=clWhite;
W:=Image1.Picture.Width; H:=Image1.Picture.Height;
Image2.Picture.Bitmap.SetSize(W,H);
Image2.Picture.Bitmap.Canvas.FillRect(0,0,W,H);
For Y:=0 to H-1 do begin
For X:=0 to W-1 do begin
C:= Image1.Picture.Bitmap.Canvas.Pixels[X,Y];
self.Lab1.Caption:=IntToStr(c);
// тут начинается код распознавания маркера
if (RED(C)+Green(C)+Blue(C)) div 3 < 250 then
Image2.Picture.Bitmap.Canvas.Pixels[X,Y]:=clBlack
else Image2.Picture.Bitmap.Canvas.Pixels[X,Y]:=clWhite;
{==========================
и т.д. (дальше временно закомментировал )...
=====}
end
end;
...И с немалым удивлением обнаружил, что после его выполнения по выходу из обработчика нажатия кнопки программа то ли завершается, то ли виснет со сворачиванием окна ...
Лазарус 1.2.6 (Win7 32)
Одиночный цикл по Х работает нормально ...
Но во вложенном цикле любое обращение к Image2. ... Pixels[X,Y] вызывает сбои ...
НО интересно, что вообще может сбоить в таком с позволения сказать коде


Ps
Сделал пока через таймер вышло даже нагляднее ...