2012-04-11 7 views
0

Ich verwende wxWidgets, um ein großes Flussdiagramm zu zeichnen, d. H. 625 x 26329 Pixel. Das Programm wurde von Qt nach WxWidgets transportiert. Es ist leicht im Layout mit einem Hauptrahmen, der innen ein angepasstes Scrollfenster hat. Das Bildlauffenster zeichnet jedes Mal innerhalb der aktualisierten Client-Region einen Teil des Diagramms.Warum aktualisiert wxWidgets das Zeichnen langsamer als Qt?

Jetzt machen Qt und WxWidgets viel Unterschied. Wenn Sie vertikal mit der Maus rollen, lädt Qt das Zeichnen des Diagramms sehr sanft, während wxWidgets langsam flimmert.

Kann mir jemand sagen, wie man das Gemälde effizient macht?

+3

Nicht, es sei denn, Sie zeigen Code oder zumindest erarbeiten, welche Art von Widgets und/oder Malcode Sie verwenden. Eine Sache, die Ihnen in den Sinn kommt, ist, dass Sie über OpenGL auf Qt, aber nicht auf WxWidgets, hardwarebeschleunigtes Malen aktiviert haben, obwohl beide Frameworks es unterstützen. – teukkam

+0

Ich denke schon, vielleicht tut Qt viel für mich, während wxWidgets solche Unterstützungen von Hand hinzufügen müssen. BTW wie Hardware-Beschleunigung mit WxWidgets zu unterstützen? – allenchen

+0

Zweitens verwende ich wxGCDC, um Anti-Aliasing-Effekte zu machen. Muss dies einige Parameter einstellen, um die Effizienz der Malerei zu erhöhen? – allenchen

Antwort

0

Sind Sie sicher, dass es langsam ist? Ich würde mich wundern, ich begegnete einer anderen Erfahrung.

Sie erwähnen Flimmern. Flackern ist meistens das Ergebnis von zu vielen Auffrischanrufen. Um dies zu verhindern, müssen Sie die doppelte Pufferung verwenden und das ist der Schlüssel.

Double Buffering bedeutet, dass alle Objekte außerhalb des Bildschirms in ein Bild/Bitmap gezeichnet werden und nachdem alles gezeichnet ist, wird das Bild/Bitmap vollständig gezeichnet (das geht wirklich schnell, also kein Flackern :)!).

Qt verwendet für die Standard-Doppelpufferung. Deshalb sieht es jedes Mal glatt aus. Der Nachteil dieses Ansatzes ist jedoch, dass er Leistung verbraucht. wxWidgets bindet dich nicht daran. Stattdessen heißt es, es ist Ihre Aufgabe, doppelt gepuffert zu werden.

Auch sollten Sie schauen, ob Sie die Region nicht zeichnen, die Sie zeichnen. Clipping unter Windows mit wxWidgets gab mir eine wirklich bessere Leistung.

PS: Ja, alte Frage, aber ich denke, es ist immer noch nötig zu wissen, wie die Fakten sind.

Verwandte Themen