Farbe durch Farbe ersetzen oder transparent machen

20/04/2016 - 22:47 von Heinz-Mario Frühbeis | Report spam
Hallo,

bietet X11 die Möglichkeit z. Bsp. in einem Pixmap eine bestimmte Farbe
durch eine andere zu ersetzen, oder diese als transparent zu markieren?
Also zum Beispiel bei einem grünen Untergrund mit 'nem weißen Punkt
drauf, alles was grün ist durch z. Bsp. Blau zu ersezten, oder wenn das
Pixmap auf ein Fenster gezeichnet wird das Grün als transparent...

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
21/04/2016 - 12:30 | Warnen spam
Am 20.04.2016 um 22:47 schrieb Heinz-Mario Frühbeis:
Hallo,

bietet X11 die Möglichkeit z. Bsp. in einem Pixmap eine bestimmte Farbe
durch eine andere zu ersetzen, oder diese als transparent zu markieren?
Also zum Beispiel bei einem grünen Untergrund mit 'nem weißen Punkt
drauf, alles was grün ist durch z. Bsp. Blau zu ersezten, oder wenn das
Pixmap auf ein Fenster gezeichnet wird das Grün als transparent...




Ich hab's jetzt mal "manuell" gemacht...
Da dieses Bilder quasi statisch sind kann ich ein Pixmap im Speicher
lassen. Dann habe ich die Hintergrundfarbe gezeichnet (XFillRectangle())
und ein Imlib_Image drauf gezeichnet.
Dann wollte ich mit X11 die Pixel abfragen und quasi tauschen, aber das
is' ja so 'ne kleine Hölle, da "man" ja erst mal ein XImage erstellen
muss für XGetPixel...<nà!>.
Also mit Imlib2 ein Buffer-Image erstellt vom Drawable und damit dann
mit imlib_query_pixel kann ich die RGB-Werte abfragen und bei
Entsprechung "pointe" ich mit XDrawPoint() auf 0 (also Color = 0 ==
Transparent).
Damit habe ich jetzt z. Bsp. ein ein opaques Kreuz und der "Rest"
ist/bleibt transparent...

Man<!>, wat 'ne Äktschen <immer>!
Machen kann ich das so, weil das Erstellen beim Programmstart quasi
einmalig ist und die Bildchen recht klein..., nun ja.

Aber es klappt! Und zur Laufzeit gibt es keine Einbußen.

Bis denne
Heinz-Mario Frühbeis

Ähnliche fragen