QPixmap auf QLabel vergrößern/zoomen ?!

Alles rund um die Programmierung mit Qt
Antworten
wojtek85
Beiträge: 37
Registriert: 11. Mai 2007 19:56
Wohnort: Köln
Kontaktdaten:

QPixmap auf QLabel vergrößern/zoomen ?!

Beitrag von wojtek85 »

Hallo,

habe ein QLabel, darauf lege ich eine QPixmap die ich mit einem QPainter bemale. Nun moechte ich eine Zoom-Funktion einbauen. Mein Vorgehen:
1) QLabel auf die neue Groesse aendern
2) QPixmap vergroessern
3) Painter skalieren

Punkte 1) und 3) sind kein Problem, aber wie bekomme ich die Pixmap groesser (und wieder auf dem Label angezeigt, wobei das klappt glaube ich). Habe versucht die Methode pixmap->scaled(x,y, aspectRatio, trafoMode) aufzurufen, aber da kommt der Fehler "QPixmap::operator=: Cannot assign to pixmap during painting". Hab schon in der Doku und hier im Forum nach anderen Loesungen gesucht, aber bisher nichts nuetzliches gefunden.

Hier ein Stueck Code fuer ZoomIn:

Code: Alles auswählen

1) Label:   pixmapLabel->setFixedSize(ceil(pixmapLabel->size().width()*1.1), ceil(pixmapLabel->size().height()*1.1));

2) Pixmap:   paintArea = paintArea->scaled(value, value, Qt::KeepAspectRatio, Qt::FastTransformation);

3) Painter:   painter->scale(1.1, 1.1);
Wie gesagt, Label wird schoen vergroessert, Painter skaliert aber leider bleibt die Pixmap gleich. Hat jemand eine Idee oder einen guten Tipp?

Danke. Gruss, Wojtek
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dafür gibts QLabel::setScaledContents ()
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
wojtek85
Beiträge: 37
Registriert: 11. Mai 2007 19:56
Wohnort: Köln
Kontaktdaten:

Beitrag von wojtek85 »

Das funktioniert ganz gut, allerdings sieht das nicht so gestochen scharf aus, wie bei einem erneuten Zeichen mit skaliertem Painter, wo ich wieder bei meinem Ausgangsproblem waere, dass die Pixmap das Label nicht ausfuellt, trotz gleicher Groesse... dafuer waere eine Loesung ganz gut.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dann würde ich wohl am ehesten das resize-Event überschreiben und dort das Pixmap skalieren und neu setzen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten