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;
}
//---------------------------------------------------------------------------