[VC++] Na czym rysować animacje?


(Holycrom) #1

Witam.

Chciałbym napisać taki programik w VisualStudio C++, który będzie wyświetlał ruch pixeli. Ot takie czarne punkciki losowo sobie chodzą po ekranie. Puki co robie to na bitmapie i wyświetlam w picturebox, ale nie ma czegoś troszkę bardziej wygodnego? Najbardziej problematyczne jest zamazywanie poprzedniej pozycji pixela, da się taką bitmape czyścić? nie widziałęm tam opcji clear.

if(e->ProgressPercentage==0)

				{

					for(int i=0;i<10;i++)

					{	 

					bitm->SetPixel(stwor[i]->pozycja_x,stwor[i]->pozycja_y,Color::White);

					pictureBox1->Refresh();

					}

				}

				if(e->ProgressPercentage==1)

				{

					for(int i=0;i<10;i++)

					{	 

					bitm->SetPixel(stwor[i]->pozycja_x,stwor[i]->pozycja_y,Color::Black);

					pictureBox1->Refresh();

					}

				}

Używam backgroundworkera i najpierw czyszczę pozycje wcześniejszą, potem losuje nową i nanoszę nową pozycję. Niestety backgroundworker ma tendencje do gubienia funkcji ReportProgress, czyli co jakiś czas jej nie wykona i w konsekwencji na bitmapce pozostają czarne plamki. Co zmienić, aby lepiej wyświetlać animacje?


(nnick) #2

Coś wygodniejszego? WPF i kontrolka Canvas. A trzymając się WinAPI to już lepiej zejść do GDI - ciut wydajniej niż takie kombinowanie. Polecam przeczytać http://www.toymaker.info/Games/html/gdi.html, a szczególnie umieszczony tam kod źródłowy.