Zawieszający się Canvas

0

Mam program (symulacja koloni bakterii - Life) i czasami przy rysowaniu na Canvasie (na TImage) czasami obraz się "zawiesza". tzn. albo obraz sie nie zmienia i nie można już po nim rysować, albo obraz znika i też nie można na nim rysować mimo, że reszta programu działa bez zarzutu. Dlaczego tak się dzieje i jak to rozwiązać?

0

Rysuj na obiekcie TBtmap, a potem przenoś to na canvas formy. Powinny zniknąć takie problemy.---------------------------
Delphi 6

Pozdrówka

0

A jak to zrobic? hmm...
Zaluzmy, ze mam taki kod:

var
Form1: TForm1;
Bufor:TBitmap;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
Bufor:=TBitmap.Create;
Bufor.Canvas.MoveTo(1,1);
Bufor.Canvas.LineTo(100,100);
end;

I jak teraz przeniesc zawartosc (narysowac) Bufor.Canvas na Form1.Canvas?

0

Jak rysowałem bezpośrednio na Canvasie to obrazek migał i często pojawiały się "zawieszenia" w formie znikania. Jak najpierw rysowałem na TBitmap zniknął problem z mruganiem, ale "zawieszenia są dalej (tylko, że troche rzadziej).

0

Znam taki problem i w 3 na 5 przypadkow pomogło coś takiego jak blokowanie Canvasu. Procedurki Lock i Unlock. Spróbuj. Niestety nie wiem dlaczego to dziala i dlaczego nie zawsze... :-) --Delphi 4 + 6

Skysh The God, Your Slave

0

Szczepan napisał:
Jak najpierw rysowałem na TBitmap zniknął problem z mruganiem, ale "zawieszenia są dalej (tylko, że troche rzadziej).

Ciekawe, ja tego używam i zawsze jest wszystko ok.---------------------------
Delphi 6

Pozdrówka

0

Dodam jeszcze, że ten problem występuje jedynie w Windows XP i Win2k w windows 98 program działa bez zarzutu.

0

Szczepan napisał:
Dodam jeszcze, że ten problem występuje jedynie w Windows XP i Win2k w windows 98 program działa bez zarzutu.

Ja mam WinXP i nic takieg jeszcze nigdy nie zauważyłem.

  1. Czy tworzysz gdzieś dynamicznie TBitmap lub TCanvas? Może nie zwalniasz uchwytów?
  2. Czy to na pewno nie rysuje na Canvasie, ponieważ blokowany jest Canvas, czy może twój program dochodzi do momentu, kiedy już nie ma zmian? To, że nie zawsze zatrzymuje się na "nieśmiertelnych" koloniach może oznaczać błąd w algorytmie, a nie w wyświetlaniu.--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1