Wie scrolle ich effektiv 1024x90000 Bild in einem Fenster?

9

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:

%Vor%

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:)

    
pavelkolodin 25.02.2012, 17:57
quelle

1 Antwort

1

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.

    
timday 28.02.2012 23:07
quelle

Tags und Links