QPixmap mit schwarzer Umrandung versehen

Alles rund um die Programmierung mit Qt
Antworten
atlastraeger
Beiträge: 32
Registriert: 11. August 2004 12:42

QPixmap mit schwarzer Umrandung versehen

Beitrag von atlastraeger »

Hallo!

Wenn man ein QPixmap pclPixmap hat, das einfach ein Rechteck mit einer einzigen Farbe ist, kann man dann irgendwie einen Rand darum kreieren?

:?:


<edit>
Meine bisherige Möglichkeit ist, das QPixmap in ein QImage zu konvertieren, um in dem QImage mit setPixel() Pixel für Pixel vier schwarze Linien zu malen - was aber SEHR lange dauert.
Daher die Frage, ob es eine effektivere Möglichkeit gibt.
<\edit>
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Nun ja, ich denke, so wie du das gemacht hast, geht im Algemeinen.
Nur musst du die Implementierung etwas effizienter machen.

so bspw. können die Linien oben und unten durch folgenden Code implementiert werden:

QImage img;

uchar * p = img.scanLine(0);
memset(p, 0, img.numBytesPerLine() /* oder so */);
p = img.scanLine(img.height()-1);
memset(p, 0, img.numBytesPerLine() /* oder so */);

Zweite Möglichkeit wäre die Darstellung von dem Pixmap und dem Rand voneinanderer zu trennen... Dazu musst du aber deine Anwendung detaillierter beschreiben... Was wird wo gezeichnet, welche Klassen werden benutzt? usw.
atlastraeger
Beiträge: 32
Registriert: 11. August 2004 12:42

Beitrag von atlastraeger »

Die Darstellung von Pixmap und Rand zu trennen ist glaube ich nicht möglich. Es geht mir um folgendes:
In einer Anwendung gibt es einen Dialog, um "Farben" zu editieren. Ich weiß, dass es dazu qcolordialog gibt, bloß geht es mir nicht darum, die eigentliche Farbe zu ändern, sondern eine andere Eigenschaft, die für den Benutzer mit der Farbe assoziiert ist.

Also habe ich in dem Dialog eine QListView, und in eine Spalte dieser QListView soll ein Kästchen mit der Farbe. Da es aber auch weiße Kästchen geben kann (also auch Kästchen mit der Hintergrundfarbe der QListView), muss ein schwarzer Rand drumherum.

Also ich glaube ich verwende den Vorschlag für die effizientere Implementierung - vielen Dank! :P
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

Beitrag von lepsai »

Ist die Anzahl von möglichen Farben "endlich", könnte man die ensprechenden Pixmaps einmal beim Starten des Programms berechnen und dann bei Bedarf laden... Dies wäre die schnellste Lösung.
Schau dir QPixmapCache an...
atlastraeger
Beiträge: 32
Registriert: 11. August 2004 12:42

Beitrag von atlastraeger »

hey, das müßte gehen... warum nicht? Dann hätte man zumindestens den Aufwand nur 1x, und nicht immer wieder... Danke!
sandman
Beiträge: 3
Registriert: 30. November 2004 13:00
Kontaktdaten:

QPixmap mit schwarzer Umrandung versehen

Beitrag von sandman »

Warum versuchst du es nicht mit einem Painter in der Pixmap?
Brauchst dann keine zusätzliche Konvertierung nach QImage:
z.B:
QPainter painter(&pixmap);
QPen pen( black, 3 ); // 3 pixels wide
painter.setPen(pen);
painter.drawRect(x, y, w, h);
wobei w, h sind die Breite bzw. Höhe der Pixmap.

Gruß,
Antworten