Archiv verlassen und diese Seite im Standarddesign anzeigen : [Qt] QPixmap skalieren?
Gartenzwerg
27-08-2004, 17:10
Hi,
ich möchte eine QPixmap auf 100x100Pixel strecken (wenn das Bild kleiner sein sollte) bzw. schrumpfen (wenn das Bild größer sein sollte). Wie mache ich das? Mit resize(int x, int y) funktioniert es nicht.
Gartenzwerg
Hi,
ich möchte eine QPixmap auf 100x100Pixel strecken (wenn das Bild kleiner sein sollte) bzw. schrumpfen (wenn das Bild größer sein sollte). Wie mache ich das? Mit resize(int x, int y) funktioniert es nicht.
Nein, der sträubt sich da etwas und tut gewiss nicht, was du willst.
Erfolg hatte ich mit so was, indem ich ein Label in den gewünschten Maßen erzeugt habe, dieses als skalierbar gesetzt und dem das QPixmap verpasst habe. Hier ein Auszug aus dem Quelltext::
QLabel* p_ue =new QLabel(p_spalte1);
p_ue->setScaledContents(true);
p_ue->resize(400,400);
p_ue->setPixmap(QPixmap("./images/stein_0001.png"));
... und schon wird das arme Steinchen aufgeblasen :)
Möglicherweise ist nicht mehr genug Platz, dann verkneift er sich manchmal das Neuskalieren in der einen oder anderen Richtung, und du musst das Label "zwingen".
Gartenzwerg
28-08-2004, 16:53
Hi,
danke deine Lösung funktioniert einwandfrei. Es gibt nur eine kleine Einschränkung: Wenn das QLabel in einem Layout steckt, akzeptiert es das resize anscheinend nicht und der Inhalt wird in Orginalgröße dargestellt. Kann man das irgendwie ändern?
Gartenzwerg
anda_skoa
28-08-2004, 22:07
Du kannst dir den Skalierungsfaktor bzw Faktoren berechnen und dann das Bild mit einem QPainter auf ein leeres 100x100 Pixmap zeichnen.
Siehe dazu QPainter::scale()
Oder in ein QImage umwandeln, scalen und zurück umwandeln.
Ciao,
_
Hi,
Einschränkung: Wenn das QLabel in einem Layout steckt, akzeptiert es das resize anscheinend nicht und der Inhalt wird in Orginalgröße dargestellt. Kann man das irgendwie ändern?
:), genau das meinte ich mit dem Zusatz.
Du kannst ausprobieren:
setMaximumSize, setMinimumSize und Konsorten, je höher das entsprechende Label in der Widget-Hierarchie steckt, desto aussichtsreicher .
setStretchFactor und Konsorten für härtere Fälle, falls mehrere Widgets in einem Ober-Widget stecken.
Ich habe auch versucht, anda_skoas Weg zu gehen, aber die Trolltech Doku meint, dass die Konvertierung QPixmap-Image nicht gerade die schnellste ist.
anda_skoa
29-08-2004, 06:09
Das ist schon richtig, weil ja vom Xserver in den Client kopiert werden muss, bzw umgekehrt, aber du wirst das ja vermutlich nicht ununterbrochen machen.
Ciao,
_
Gartenzwerg
29-08-2004, 06:25
Hab jetzt den Weg von anda_skoa genommen. Dieser ist schön einfach und funktioniert spitze. Das Bild wird sehr selten skaliert, damit sollte die Geschwindigkeit für mich keine Rolle spielen.
Gartenzwerg
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.