Kleinere QPixmap in größerer QPixmap zentrieren

Alles rund um die Programmierung mit Qt
Antworten
kert
Beiträge: 15
Registriert: 10. Oktober 2008 08:32

Kleinere QPixmap in größerer QPixmap zentrieren

Beitrag von kert »

Hallo,

ich erzeuge mir über die Funktion QBitmap::fromData eine Bitmap mit angegebener Größe des Rasters und den bits.

int width = MySymbols[0].Width;
int height = MySymbols[0].Height;
QBitmap cb = QBitmap::fromData(QSize(width, height), MySymbols[0].Rasters);
QIcon symbolIcon;
symbolIcon.addPixmap(cb);

In meinem Array MySymbols sind verschiedene Symbole unterschiedlicher Größe, angefangen bei 3x3Pixel, gespeichert. Nun möchte ich das erste Symbol des Feldes aber in ein QIcon der Größe 20x20 einfügen. Dabei würde ich das Ganze gerne so machen, dass das gerasterte Symbol in dem neuen QIcon zentriert/mittig erscheint.

Wenn ich schreibe: QBitmap cb = QBitmap::fromData(QSize(20, 20), MySymbols[0].Rasters); kommt nichts gescheites bei raus.
Hat jemand von euch vielleicht irgendwelche brauchbaren Tipps für mich?
Schonmal viele Dank. Kerstin.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QPainter ist dein Freund.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
kert
Beiträge: 15
Registriert: 10. Oktober 2008 08:32

Beitrag von kert »

Das habe ich versucht:

QPainter painter;
painter.drawPixmap(0, 0, width, height, cb);
//symbolIcon.addPixmap(cb);
symbolIcon.paint(&painter, 0, 0, size.width(), size.height());

Aber mein symbolIcon ist ein NULL-Icon (isNull() == true) und ich sehe überhaupt kein Icon mehr... Verwende ich das falsch?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Auch nur ansatzweise die Doku zu QPainter gelesen?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
kert
Beiträge: 15
Registriert: 10. Oktober 2008 08:32

Beitrag von kert »

ich sollte dem konstruktor von QPainter vielleicht zunächst einen PaintDevice übergeben:

QBitmap cb;
QPainter painter(&cb);
cb = QBitmap::fromData(QSize(width, height), MySymbols[s].Rasters);

painter.drawPixmap(startX, startY, width, height, cb);

Aber ich verstehe noch nicht, wie ich dann das ganze wieder auf den qicon bekomme...

mit folgender zeile gehts auf jeden fall nicht:
symbolIcon.paint(&painter, 0, 0, size.width(), size.height());

cb ist das, was ich habe und darstellen möchte. nur kann es verschiedene größen haben, so dass ich es dann nochmal zentriert in dem qicon darstellen will? irgendwie kriege ich das nicht hin. hat vielleicht noch jemand einen tipp für mich?
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

kert hat geschrieben: QBitmap cb;
QPainter painter(&cb);
cb = QBitmap::fromData(QSize(width, height), MySymbols[s].Rasters);
painter.drawPixmap(startX, startY, width, height, cb);
cb ist das, was ich habe und darstellen möchte.
Du zeichnest anscheinend aus cb in cb. Das geht wohl schief. Nimm ein anderes Paintdevice.
tschüß
TrollSoft
Antworten