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.
Kleinere QPixmap in größerer QPixmap zentrieren
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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?
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:
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?
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
Du zeichnest anscheinend aus cb in cb. Das geht wohl schief. Nimm ein anderes Paintdevice.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.
tschüß
TrollSoft