Transparenz in Bildern

Hi

Ich habe ein Problem: Ich will Bilder mit weissem Hintergrund transparent darstellen. Ich habe bei dazu folgenden Quelltext gefunden:

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;
}

Wie muss ich die Prozedur jetzt aufrufen? Ich hab schon verschiedene Sachen versucht, aber es geht nix.

Wer mir sagen kann wie das geht: BITTE MELDET EUCH!
Vielen Dank!

D. Mertins

(Wer den Text komplett lesen will: http://www.galileocomputing.de/openbook/javainsel3/j… )

(Achja und Gegooglet hab ich auch schon!!! ) :smiley::smiley: :wink:

Hallo.

Ich habe ein Problem: Ich will Bilder mit weissem Hintergrund
transparent darstellen. Ich habe bei dazu
folgenden Quelltext gefunden:

…ein sogenanntes Snippet: nur ein Teilausschnitt eines Programms wird beleuchtet.
So auf die Schnelle (also bitte nicht schlagen, wenn ich daneben liegen sollte) dürfte der ‚package‘ Befehl weiterhelfen.
Dieselbe Zeile muss dann aber in allen betroffenen Javaprogrammen
auftauchen :wink:

package Bilderzeichnen; //als Beipiel


> 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;  
> }  
>   
> Wie muss ich die Prozedur jetzt aufrufen? Ich hab schon  
> verschiedene Sachen versucht, aber es geht nix.

Der Aufruf läuft dann über 'filterRGB(x,y,z)' (Werte für x,y,z einsetzen)
Ausserdem muss das Bild erstmal über den sog. 'MediaTracker' geladen werden: http://www.addison-wesley.de/media\_remote/katalog/bsp/3827322359bsp.pdf
böse suchmaschine @ MediaTracker +java filetype:stuck\_out\_tongue:df

Oder: man schreibt [..]'extends ,RGBFilter'
und schneidet den Teil ab { bis } aus und setzt diesen in den Originalcode.


> Wer mir sagen kann wie das geht: BITTE MELDET EUCH!  
> Vielen Dank!

HTH
mfg M.L.


> (Wer den Text komplett lesen will:  
> http://www.galileocomputing.de/openbook/javainsel3/javainsel\_140014.htm#Rxxjavainsel\_140014434Transparenz  
> )

Java 1.4
openbook für Java 1.5 (Tiger) unter http://www.galileocomputing.de/openbook/javainsel4/

Hi Danke schon mal für die Hilfe, aber ich hab das Problem, das der immer meckert wenn ich ihm 3 int Zahlen übergeben will… Dann kennt er ab und zu mal die Klasse nicht oder sagt was von wegen „aus einem statischen Kontext kann aus einem nicht-statischem Kontext heraus nicht zugegriffen werden“…

Hab mir das alles selbst beigebracht, was ich bisher kann…
Deshalb kann es passieren, dass ich hier ein paar doofe Fragen stelle… Bitte entschuldigt das :wink:

Gelöst aber neues Problem :wink:
So das mit dem Transparenten habe ich gelöst. Vielen Dank schon mal, mit der Hilfe hab ich es doch geschafft.

Habe nun aber neues Problem:

Ich lege eine Variable in die Klasse „hareData“

mit
„ShareData s1 = new ShareData();“

rufe ich es wieder ab. Nun folgendes Problem: Ich will mit der Variablen ein Bild laden:

Image p1 = Toolkit.getDefaultToolkit().getImage(
„C:/Lokaler Datenbereich/Programme/JBuilder/Projekte/Blobby/bilder/“ +
s1.retrieve() + „.gif“);

Da ich das aber in der „Start“-Class machen muss, kann Java scheinbar die s1 noch nicht richtig auslesen… Zumindest gibt er mir immer „0“ zurück…

Was tun??

Vielen Dank schonmal für Hilfen.

D. Mertins

Re: Gelöst aber neues Problem :wink:
Hallo nochmal.

Der geneigte Leser würde gerne erfahren wie der bisherige
Code aussieht, da das evtl. einige Probleme lösen könnte

So das mit dem Transparenten habe ich gelöst. Vielen Dank
schon mal, mit der Hilfe hab ich es doch geschafft.

Bitte :smile:

Habe nun aber neues Problem:

Ich lege eine Variable in die Klasse „ShareData“

mit
„ShareData s1 = new ShareData();“

Das ist lediglich der Konstruktor.

rufe ich es wieder ab. Nun folgendes Problem: Ich will mit der
Variablen ein Bild laden:

Image p1 = Toolkit.getDefaultToolkit().getImage(
„C:/Lokaler
Datenbereich/Programme/JBuilder/Projekte/Blobby/bilder/“ +
s1.retrieve() + „.gif“);

Nicht ‚C:\Lokaler Datenbereich\Programme\JBuilder\Projekte\Blobby\bilder‘ ?
Wenn der direkte Zugriff auf die Platte mal möglich ist…

Da ich das aber in der „Start“-Class machen muss, kann Java
scheinbar die s1 noch nicht richtig auslesen… Zumindest gibt
er mir immer „0“ zurück…

Was tun??

Was ist denn die Quelle für den oberen Code ?
http://www.galileocomputing.de/openbook/javainsel3/j… ?
Aber ich vermute, dass der Konstruktor alleine noch etwas zu wenig ist

HTH
mfg M.L.