[MDX] In Panel rendern
-
Hi,
ich habe ein Device erstellt, dass in ein Panel rendert - das klappt auch wunderbar. Zum Rendern ins Panel habe ich eine Methode, die an das Paint Event gekoppelt ist:
public void mainPanel_onPaint(object sender, System.Windows.Forms.PaintEventArgs e) { device.Clear(ClearFlags.Target | ClearFlags.ZBuffer , Color.RoyalBlue, 1.0f, 0); device.BeginScene(); // Render Code device.EndScene(); device.Present(); mainPanel.Invalidate(); }Da das Paint Event ja nur gefeuert wird, wenn das Panel neu gezeichnet werden muss (z.B bei Resizing), habe ich versucht am Ende der Methode Invalidate auf das Panel aufzurufen. Dadurch friert jedoch die gesamte Anwendung ein. Ein Application.DoEvent() vor Invalidate() zu setzen brachte auch nichts. Weiß wer, wie ich es schaffe in das Panel flüssig zu rendern, wobei nach wie vor alle anderen Komponenten der Form bedienbar bleiben?
-
Als einfachste Möglichkeit nimmst du einen Timer, der 50 mal in der Sekunde aufgerufen wird.
Als Alternative musst du dich in den Even Loop deiner Anwendung einhängen.
-
Danke. Das mit dem Timer klappt wunderbar

-
Ich kenn' C# / MDX nicht, aber die Kapselung von Borland C++ Builder bzw. MFC hat üblicherweise einen Handler "OnIdle", der immer aufgerufen wird, wenn gerade nichts anderes zu tun ist. Dort halt einfach Render() aufrufen.
(Daß, was Du sonst explizit in Deiner "Erst greif' ich mir alle WM_Events, dann render() ich!" - Schleife machen würdest.)