TImage Anzeigeproblem
-
Hallo Community,
ich möchte verschiedene Diagramme in TImages zeichnen und diese in einen Vector schieben. Wenn ich dann auf einen Button weiter drücke, sollen diese nacheinander wieder angezeigt werden.
Ich habe mich nun am Beispiel von Jansen im FAQ "Komponenten Benutzen" orientiert. Ich möchte aber keine Bilder laden sondern diese selber zeichnen. Leider werden mir meine gezeichneten Images nicht angezeigt. was mache ich falsch?
Ich vermute, dass ich statt dem
Image1->Picture->Bitmapetwas anderes nehmen müsste, aber was?
#include <vector> std::vector<Graphics::TBitmap*> BmpVector; //--------------------------------------------------------------------------- // Vector nach Bedarf mit Bitmap-Objekten füllen void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap *bmp = new Graphics::TBitmap; // Beispiel für Textausgabe und Linie zeichnen bmp->Canvas->TextOutA(300,200,"Hallo"); bmp->Canvas->MoveTo(400,200); bmp->Canvas->LineTo(500,200); BmpVector.push_back(bmp); } //--------------------------------------------------------------------------- // durch die im Vector gelisteten Bilder blättern void __fastcall TForm1::Button2Click(TObject *Sender) { if (Button2->Tag >= BmpVector.size()) Button2->Tag = 0; if (BmpVector.size()) Image1->Picture->Bitmap = BmpVector[Button2->Tag++]; } //--------------------------------------------------------------------------- // Bitmap-Objekte freigeben void __fastcall TForm1::FormDestroy(TObject *Sender) { int count = BmpVector.size(); while (count) delete BmpVector[--count]; }
-
Hallo
Das eigentliche Problem dürfte sein das du dem neu erstellten Bitmaps vor den Zeichenoperationen keine Dimension zuweist. Das heißt alle Bitmaps haben eine Größe von 0x0 Pixeln. Und deshalb wird auch nichts dargestellt.
bis bald
akari
-
Super, das wars.
Danke
egcactus
-
int count = BmpVector.size(); while (count) delete BmpVector[--count];Reicht hier nicht einfach diese Zeile?
delete BmpVector[];
-
Hallo
Nein das reicht nicht. Dieser Aufruf wäre für ein dynamisches C-Array richtig (und nur für das Array, nicht für die Instanzen hinter den Pointern), nicht aber für einen std::vector.
bis bald
akari
-
Der Aufruf wäre auch für ein C-Array nicht richtig.