Seite 1 von 1

Farbe einer Bitmap transparent anzeigen

Verfasst: 14. Februar 2013 11:02
von anti-freak
Hallo,
meine Frage ist folgendes. Wie schaffe ich es, eine bestimmte Farbe einer Bitmap transparent anzeigen zu lassen? Habe jetzt ein wenig herumgespielt, aber bisher ist nichts brauchbares dabei heraus gekommen. Google lieferte leider auch nichts passendes.
Im Prinzip ist das System einfach. Ich lasse den User per Mausklick eine Farbe bestimmen, und diese soll dann in der nächsten Ansicht nicht mit angezeigt werden. Das Auslesen der Farbe ist hierbei kein Problem!

Wäre um einen kleineren Denkanstoß dankbar.

mfg

PS: ich nutze Qt 4.8.1

Re: Farbe einer Bitmap transparent anzeigen

Verfasst: 14. Februar 2013 11:31
von veeman
Es kommt drauf an wie du das Bild anzeigst bzw. verarbeitest.
Vielleicht hilft dir QImage::createMaskFromColor

Mfg veeman

Re: Farbe einer Bitmap transparent anzeigen

Verfasst: 15. Februar 2013 18:25
von anti-freak
Hey, danke für deine Antwort.
Ich sehe aber gerade mein eigentliches Problem. Ich programmiere mir gerade einen Tile-MapEditor (2d). In der Datenbank kann ich nun Tiles auswählen und die transparente Farbe bestimmen. Nun soll in der normalen Map Ansicht jedes Tile verfügbar sein. Da kommt das 1. Problem.
Im Moment versuche ich alle Tiles auf einem QGraphicsView anzeigen zu lassen. Allerdings habe ich ja das Problem, das jedes Tile eine andere transparente Farbe hat, was eben leider nicht zu meinem gewünschten Resultat führen kann. Andere Idee war, für jedes Tile ein Label zu erstellen. Allerdings kommen wir dann zu einem weiteren Problem, eben der Map. Macht sicherlich keinen Sinn 500*500 Labels zu erstellen. Desweiteren wird die Map verschiedene Ebenen haben, die man Ab- und Anwählen kann. -> Nächstes Problem. Deswegen ein Graphicsview, weil man hier schön mit Ebenen arbeiten kann. Allerdings kommen wir, wie gesagt, hier zu einem Problem mit der transparenten Farbe. Im Game ist das später kein Problem, mit DirectX habe ich da vollen Zugriff drauf, welche Farbe von welchem Sprite transparent dargestellt werden soll, in Qt konnte ich sowas leider bisher nicht wirklich finden. Hoffe es ist nun etwas klarer, was ich vor habe.

mfg

Re: Farbe einer Bitmap transparent anzeigen

Verfasst: 15. Februar 2013 18:49
von veeman
Ich nehme mal an du verwendest QGraphicsPixmapItem bzw das dazugehörige QPixmap um deine Tiles darzustellen, oder?

Die Standardeinstellung des QGraphicsPixmapItem ist das es die Maske des QPixmap verwendet (->QGraphicsPixmapItem::MaskShape).
Das heist du brauchst im Prinzip einfach die Maske zu deinem Tile (QPixmap) zu setzen und es sollte transparent dargestellt werde.

Code: Alles auswählen

QPixmap pixmap = ...;
pixmap.setMask(pixmap.createMaskFromColor(QColor(64,127,255)));
...
QGraphicsView view;
view.scene()->addPixmap(pixmap);
Beachte das du die Funktion createMaskFromColor so wenig wie möglichst verwendest um Performance-Probleme zu umgehen.

//Edit:
Kennst du Tiled? Ist Open-Source vl. willst ja da mal reinschauen was die da fabriziert haben.

Mfg veeman

Re: Farbe einer Bitmap transparent anzeigen

Verfasst: 15. Februar 2013 19:34
von anti-freak
Sehr schön, danke!
Es funktioniert ;)