Przerwanie w wyswietlaniu obrazkow

0

Mam bardzo prosty program. Jest sobie Form'a na korej mam TImage, a w watku co pol sekundy zmieniam obrazki z jednego na drugi co daje w rezultacie pseudo Animacje. Problem w tym ze po najechaniu kursoru myszki na Form'e animacja albo sie zatrzymuje albo (najczesciej) po prostu znika - program wciaz sie wykonuje, petla dziala caly czas ale nie widac rezultatow!!! Nie zauwazylem zadnej prawidowosci, moze poza tym ze im wiekszy obrazek tym szybciej znika :/ Nic mi juz nie przychodzi do glowy (problem na pewno nie jest spowodowany podwojnym buforowaniem... zreszta kto chce mozna go wylaczyc i sam sprawdzic). Rysowalem tez bezposrednio na Form'ie
Form1->Canvas->StretchDraw(...)
zamiast w TImage ale to tez nic nie daje. Jeli ktos zna rozwiazanie tego problemu to bardzo prosze o pomoc. Ponizej podaje kod programu (prawie caly, bez #include :] )

Na formie mam komponent:
TImage Image1;

w pliku z Form'a dodalem tylko:

//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
	DoubleBuffered=true; //podwojne buforowanie dla programu (Builder wszystko robi sam)
	Watek = new TMyThread(false);
}
//---------------------------------------------------------------------------

drugi plik to klasa dziedziczaca po TThread (podrecznikowo z help'a)

//---------------------------------------------------------------------------
__fastcall TMyThread::TMyThread(bool CreateSuspended)	: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall TMyThread::Execute()
{
  TRect rectObszarDoZarysowania(0,0,320,240);
  Graphics::TBitmap *Bmp1 = new Graphics::TBitmap;
  Bmp1->LoadFromFile("r0.bmp");

  Graphics::TBitmap *Bmp2 = new Graphics::TBitmap;
  Bmp2->LoadFromFile("r1.bmp");
  bool flip=true;

  while (!Terminated)
  {
  	Sleep(500);
  	if (flip)
      Form1->Image1->Canvas->StretchDraw(rectObszarDoZarysowania,Bmp1);
    else
      Form1->Image1->Canvas->StretchDraw(rectObszarDoZarysowania,Bmp2);
   	flip=!flip;
  }
  delete Bmp1;
  delete Bmp2;
}
//---------------------------------------------------------------------------
0

Zamiast nowego wątku spróbuj użyć timer'a.

0

Teraz dziala bez zarzutu :] Wielkie dzieki 0x666 ... dobry pomysl

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