Trochę kodu przedstawię, może pomożecie mi w usunięciu wąskiego gardła :>
Synchronizowana metoda maluj: \imagesy to są paintboxy
void __fastcall ZbiorMaszyn::maluj()
{
int X = MT[aktualna_maszyna]->GetX();
int Y = MT[aktualna_maszyna]->GetY();
int index = X + GetWidth() * Y;
TRGBTriple * row = (TRGBTriple *)bitmapa->ScanLine[Y];
row[X].rgbtRed += tab_rgb[MT[aktualna_maszyna]->GetStan()].r;
row[X].rgbtGreen += tab_rgb[MT[aktualna_maszyna]->GetStan()].g;
row[X].rgbtBlue += tab_rgb[MT[aktualna_maszyna]->GetStan()].b;
TRGBTriple * row2 = (TRGBTriple *)bitmapa2->ScanLine[Y];
row2[X].rgbtRed += tab_rgb2[tab[index]].r;
row2[X].rgbtGreen += tab_rgb2[tab[index]].g;
row2[X].rgbtBlue += tab_rgb2[tab[index]].b;
if(MT[aktualna_maszyna]->GetIteracja() % GetZrzut() == 0)
{
Form1->Image2->Canvas->CopyRect(Rect(0,0,GetWidth(),GetHeight()),bitmapa->Canvas,Rect(0,0,GetWidth(),GetHeight()));
Form1->Image4->Canvas->CopyRect(Rect(0,0,GetWidth(),GetHeight()),bitmapa2->Canvas,Rect(0,0,GetWidth(),GetHeight()));
Form1->StringGrid_Maszyna->Cells[1][MT[aktualna_maszyna]->GetNR() + 1] = Form1->WstawSeparator(MT[aktualna_maszyna]->GetIteracja());
Form1->StringGrid_Maszyna->Cells[3][MT[aktualna_maszyna]->GetNR() + 1] = IntToStr(X) + ":" + IntToStr(Y);
Form1->StringGrid_Maszyna->Cells[4][MT[aktualna_maszyna]->GetNR() + 1] = IntToStr(MT[aktualna_maszyna]->GetStan());
}
}
Ogolnie podejscie jest takie : wczytuje bitmapke do TImage, nakladam punkty (miejsca startowe maszyn) i zapuszczam przetwarzanie. bitmapa daje nam obraz przetwarzania na podstawie stanow, a bitmapa2 na podstawie wyjsc. Ilosc zrzutow ustalilem na powiedzmy co 500 iteracji.
Oraz mam drugi problem, znacznie bardziej zlozony (te wizualizacje w miare szybko jeszcze dzialaja). Mianowicie mam tworzyc obraz na podstawie zlepek n poprzednich bitmap.
dla takiej tablicy mam utworzyc :
|2|2|2|2|2|
|2|1|1|1|2|
|2|1|0|1|2|
|2|1|1|1|2|
|2|2|2|2|2|
bitmapa[i][j] = bitmapa w chwili t-index w stringgridzie[i][j].
W tym przypadku bitmapa wynikowa sklada sie z pixeli z 3 bitmap. W chwili t-2, t-1, i obecnej(pixel w centrum).
Dla obrazu 347 x 159 daje nam to okolo 55k iteracji, co straasznie wolno działa :> gdy robie to pixel po pixelu. Da rade jakos nalozyc porcjami ? bo jak widac, taka tablica ma budowe pierscienia, i spokojnie moglbym cala linijka pionowa kopiowac z odpowiedniej bitmapy do biezacej, wartosci piskela.
I co masz na mysli graphics32 ? To jest dodatkowy komponent ? masz przykladowy kod wykorzystania ?