Ich habe die folgende UI, wo das Sonogramm (Freq + Time Sound-Darstellung) angezeigt wird. Das Bild wird also nicht von irgendwo geladen, es wird von QPainter
beim Lesen von WAV
file gezeichnet.
Meine aktuelle Implementierung ist ein einzelnes großes QImage
-Objekt, in dem das Bild gezeichnet wird. Und auf paintEvent()
zeichne ich einen Teil des großen QImage
auf das Widget:
Aber wie ich weiß, ist das QPixmap
für die Anzeige von Pixmaps auf dem Bildschirm optimiert, also sollte ich das QImage
nach dem Zeichnen des Sonogramms in ein QPixmap
konvertieren?
Es lohnt sich auch, ein großes Bild als eine Art verkettete Liste von separaten QPixmap
-Objekten kleinerer Größe zu halten und paintEvent()
schlauer zu machen, um auf einer Liste kleinerer Objekte zu arbeiten, um Qt's automatische Schneideverfahren zu vermeiden so weiter?
Wenn mein QImage groß genug ist, verbraucht jede paintEvent()
viel CPU
.
Alle Arten von Ratschlägen sind willkommen:)
Ja, in meiner begrenzten Erfahrung mit der Qt-App-Entwicklung lohnt es sich, wenn Sie ein statisches Bild (oder ein selten aktualisiertes Bild) haben, (aus Leistungsgründen) ein QPixmap
daraus zu erstellen und es über% zu verwenden. co_de% in deinem QPainter::drawPixmap
-Handler.
Allerdings habe ich nie versucht, etwas Größeres als etwa 4Kx4K-Bilder zu machen, also ob es für Ihr riesiges Bild funktioniert oder furchtbar überfällt, wenn Sie anfangen, Ihren Grafikspeicher zu stressen, kann ich nicht sagen. Ich würde es sicherlich ausprobieren, bevor ich darüber nachdenke, ein kompliziertes Tiling-System hinzuzufügen.