TImage *str1 = new TImage(this);
str1->Parent = this;
str1->Width = 815;
str1->Left = Form1->Width/2 - str1->Width/2;
str1->Top = Panel->Height + 5;
generuj_liste(str1->Canvas, 1,1);
no i teraz niech tworzy dynamicznie
TImage *str2 = new TImage(this);
str2->Parent = this;
str2->Width = 815;
str2->Left = Form1->Width/2 - str1->Width/2;
str2->Top = str1->Top + str->Height + 20;
generuj_liste(str2->Canvas, 1,1);
Nie wiem dokładnie z czego to wynika, ale przed użyciem płótna Canvas musisz najpierw określić rozmiar obiektu który z tego płótna korzysta, tutaj jest to obiekt typu Timage.
Wynika to z tego, że Canvas nie jest miejscem, po którym rysujesz, jest tylko zestawem narzędzi do rysowania - pisałem już o tym kiedyś.
(...) co jak sądzę ma związek z tym, że Image nie posiada własnej powierzchni, lub też dlatego że Image przechowuje to co zostało na nim narysowane.
polymorphism napisał(a):Jeśli przechowuje to, co zostało na nim narysowane, to znaczy, że jednak tę powierzchnie posiada, jest nią bitmapa.
W tym właśnie problem, że Image->Canvas, nie uwzględnia zmiany rozmiaru i wywołanie funkcji Repaint tego nie zmienia.
KOD cpp: UKRYJfor (lp = 1; lp < 20; lp++)
{
str1->Height = lp * 30;
str1->Picture->Bitmap->Width = str1->Width;
str1->Picture->Bitmap->Height = str1->Height;
str1->Picture->Bitmap->Canvas->TextOut(30, (lp-1)*30, lp);
}
polymorphism napisał(a):Strasznie nieefektywne to. Przecież rozmiar bitmapy można obliczyć i ustawić przed pętlą.
Powrót do Ogólne problemy z programowaniem
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości