c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Ralf Löhmer
Datum: Fr, 10.03.2006 18:11:05
In-reply-to:
<44109EF2.9090107@xxxxxxxxxxxxxxxx>
Hallo,
nochmal wg. Transparenz.
Vielleicht hilft der Anhang weiter.
rl
-----Ursprüngliche Nachricht-----
Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx
[mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx]Im Auftrag von
Stefan Geuken
Gesendet: Donnerstag, 9. März 2006 22:33
An: ct-bot-entwickler@xxxxxxxxxxxxxxxxx
Betreff: [ct-bot] Fotorealistisches LCDisplay
Hallo,
ich experimentiere gerade mit meiner LCDisplay-Komponente
(http://www.ctbot.de/index.php?page=4&action=file&file_id=41). Ich habe
den ganzen Characterset jetzt in eine PNG-Datei gepackt (16x16 Zeichen,
bestehend aus schwarzen und weißen Pixeln) und ziehe mit Hilfe der
Klassen java.awt.image.PixelGrabber und java.awt.image.MemoryImageSource
den für jedes Zeichen richtigen Bereich aus der PNG-Datei raus. Das
klappt soweit auch.
Was ich nicht hingekomme ist, daß die weißen Pixel transparent
gezeichnet werden. Die bleiben weiß, obwohl ich im PNG die Farbe weiß
als transparent abgespeichert habe. Kann mir jemand einen Tipp geben,
wie man ein Bild mit transparenten Farben malen kann!?
Gruß
Stefan
_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler
____________
Virus checked by G DATA AntiVirusKit
Version: AVK 16.5906 from 04.03.2006
14.12.4 Transparenz Quelle: Java ist auch eine Insel, C. Ullenboom
Um eine bestimmte Farbe eines Bilds durchsichtig zu machen (also die Transparenz zu bestimmen), nutzen wir einen RGBImageFilter. Dabei implementieren wir einen Konstruktor, der die Farbe sichert, die transparent werden soll. Sie wird später in der Implementierung von filterRGB() verwendet. Die Methode, die ja für jeden Bildpunkt aufgerufen wird, liefert dann entweder die Farbe ohne Alpha-Kanal zurück (rgb|0xff000000) oder eben nur den Alpha-Kanal (rgb&0xffffff) für Transparenz. Eine interessante Erweiterung ist die Einführung einer Toleranzauswertung um einen »Zauberstab«, der ähnlich wie in Photoshop zu realisieren ist.
Listing 14.26 TransparentFilter.java
import java.awt.*;
import java.awt.image.*;
public class TransparentFilter extends RGBImageFilter
{
public TransparentFilter( Color color )
{
this.color = color.getRGB();
}
public int filterRGB( int x, int y, int rgb )
{
if ( rgb != color )
return rgb | 0xff000000;
else
return rgb & 0xffffff; //transparent
}
private int color;
}