Grafik wird nicht dargestellt [VC++]

Trombo79

Grünschnabel
Hallo,

ich habe ein (für mich) merkwürdiges Problem und weiß nicht woran es liegt. Ich versuche ein Tortendiagramm auf eine Form zu zeichnen, was auch in einer leeren Form wunderbar klappt. Sobald ich der Form aber z.B. ein Label oder einen Button hinzufüge wird die Grafik nicht dargestellt, ich bekomme nur die Steuerelemente zu sehen. Wenn aber auf der Form nur ListBoxen sind wird die Grafik komischerweise dargestellt :confused:! Weiß jemand was da schief läuft bzw. was ich falsch mache?

Vielen Dank schonmal!

Viele Grüße
Trombo
 
Hat hier wirklich niemand eine Lösung? Ich bekomm es einfach nicht hin! Kann es sein, dass die Grafik in dem Label bzw. dem Button gezeichnet wird und ich sie deshalb nicht auf der Form sehe? Aber wie bekomme ich es dann hin, dass die Grafik auf der Form gezeichnet wird?

Bin für jede Hilfe dankbar!

Viele Grüße
Trombo
 
Hi

Nicht pushen!
Zeig doch mal ein bisschen Code! Wo (Zeitpunkt zur Laufzeit, Control, ...) zeichnest du denn? Wie fügst du die anderen Controls hinzu? Zur Laufzeit oder schon im Designer?
 
Hi,

sorry, wollte nicht nerven. Bin nur ein bisschen verzweifelt im Moment, komme einfach nicht weiter mit dem Problem.

Ich möchte das Diagramm beim Start der Form direkt darstellen lassen, deshalb habe ich den Code zum Zeichnen in den Konstruktor gepackt. Die Controls (Label und/oder Button) füge ich im Designer hinzu.
Hier ist der Konstruktor, der den kurzen Testcode enthält um ein Tortendiagramm im ganzen Fenster darzustellen:

Code:
Form1(void)
{
	InitializeComponent();
	
        this->Visible = true;
	Graphics^ g = this->CreateGraphics();
	Brush^ b = gcnew SolidBrush(Color::Green);
	g->FillPie(b, this->ClientRectangle, -90, 110);
	b = gcnew SolidBrush(Color::Yellow);
	g->FillPie(b, this->ClientRectangle, 20, 200);
	b = gcnew SolidBrush(Color::Red);
	g->FillPie(b, this->ClientRectangle, 220, 50);
	Pen^ p = gcnew Pen(Color::Black, 2);
	g->DrawPie(p, this->ClientRectangle, -90, 110);
	g->DrawPie(p, this->ClientRectangle, 20, 200);
	g->DrawPie(p, this->ClientRectangle, 220, 50);
	delete g;
}

Falls noch mehr Infos benötigt werden, einfach posten! Ich hoffe ihr könnt mich aufklären, was da schiefläuft!

Viele Grüße
Trombo
 
Hallo Trombo,

die wichtigste Regel beim Zeichnen: Alle Zeichenroutinen gehören in den Paint-Event. Nur damit ist sichergestellt werden, dass sie zum richtigen Zeitpunkt ausgeführt werden und damit sichtbar bleiben.

Gruß
MCoder
 
Hi MCoder,

das war mir so nicht klar. Cool, thx, das Problem hat sich damit erledigt :)! Die Diagramme werden nun trotz Label und Button beim Start gezeichnet, super! Tolles Forum

Vielen Dank und Grüße
Trombo
 
Zurück