transparente farbe in Image mit Graphics

Status
Nicht offen für weitere Antworten.
O

ollilebowski

Gast
hallo!

weiss einer, ob ich in einem Image, dass eine Graphics hat,
also nicht mit createImage erstellt wurde.
punkte transparent machen kann???

mit einem Image, dass mit createImage erstellt wurde kann ich das,
aber bei anderen krieg ich das nicht hin!

mfg, olli
 

Soulfly

Bekanntes Mitglied
1. Musst dir erst daraus ein BufferedImage erstellen.
2. Dann liest du das Raster vom BufferedImage heraus packst es in ein ByteArray (byte[])
3. Prüfe, ob es ein RGB oder RGBA Raster ist, (wenn RGB so umformen einweiteres Byte für A vorhanden ist)
4. Dann kannste dass Raster verändern wie du willst.
5. Lädst es dann wieder in das BufferedImage und lässt es zeichen.

Das wars soweit im Groben
 
O

ollilebowski

Gast
rgba is das mit alphawert oder?
ist alpha der transparentwert,
oder wie meinst du das?
 

lin

Top Contributor
Ja, RGBA steht für Red Green Blue Alpha
Alpha ist der Transparenzwert, 255 heisst die Farbe ist ganz zu sehen, 0 heisst die Farbe ist nicht zu sehen...
Wenn du Punkte transparent machen willst, veränderst du einfach deren Alpha Wert.
 

lin

Top Contributor
hm, bisserl code gefälligst? (zeichnet ellipse, kreis und hintergrund, und variert dann die alpha werte (nicht sonderlich schöner code, aber was solls ;-) )

Code:
import java.awt.*;
import java.awt.geom.*;

import javax.swing.*;

public class Alpha {
	JFrame f = new JFrame(); //JFrame, in welchem die Zeichnung ist
	static int W=300, H=300;
	
	public Alpha() {
		f.setSize(W, H);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setTitle("Alpha Value");
		
		JPanel pane = new JPanel(new BorderLayout());
		VarAlpha var = new VarAlpha();
		pane.add("Center", var.makeLabel());
		
		//Thread, der die Alpha Werte variert
		Thread thr = new Thread(var);
		thr.start();
		
		f.setContentPane(pane);
		f.setVisible(true);
	}
	
	public static void main(String[] args) {
		new Alpha();
	}
}

class Draw extends JLabel {
	int W, H, tw = 0, t=0;
	Color col1 = Color.ORANGE, col2 = Color.BLUE, col3 = Color.RED;
	
	public Draw () {
		this.W = Alpha.W;
		this.H = Alpha.H;
	}
	
	//hier werden die Bestandteile gezeichnet
	public void paintComponent(Graphics g) {
		Graphics2D g2 = (Graphics2D)g;
		
		g2.setColor(col1);
		Rectangle2D.Double rect = new Rectangle2D.Double( 0, 0, W, H );
		g2.fill(rect);
		g2.draw(rect);
		
		g2.setColor(col2);
		Ellipse2D.Double circle = new Ellipse2D.Double( 0, 0, W, H );
		g2.fill(circle);
		
		g2.setColor(col3);
		Ellipse2D.Double ell = new Ellipse2D.Double( W/4, 0, W/2, H );
		g2.fill(ell);
	}
	
	//hier werden die Farbe mit den entsprechenden Alpha-Werten erstellt, dann wird geupdatet
	public void setAlphas(int alpha1, int alpha2, int alpha3) {
		col1 = new Color( col1.getRed(), col1.getGreen(), col1.getBlue(), alpha2 );
		col2 = new Color( col2.getRed(), col2.getGreen(), col2.getBlue(), alpha2 );
		col3 = new Color( col3.getRed(), col3.getGreen(), col3.getBlue(), alpha3 );
		update();
	}
	
	public void update() {
		this.repaint();
	}
}

class VarAlpha implements Runnable {
	int alpha = 0;
	Draw draw = new Draw();
	
	public JLabel makeLabel() {
		return draw;
	}
	
	//hier wird das alpha variert, dann der Draw übergeben, und kurz schlafen gelegt
	public void run() {
		while(true) {
			while( alpha <=255 ) {
				draw.setAlphas(alpha, 255-alpha, alpha);
				try {
					Thread.sleep(2);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}			
				alpha ++;
			}
			alpha--;
			
			while( alpha > 0) {
				draw.setAlphas(alpha, 255-alpha, alpha); 
				try {
					Thread.sleep(2);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}	
				alpha--;
			}
		}
	}
}
 
O

ollilebowski

Gast
schon mal vielen dank für deine mühe!
aber ich glaube, du hast mich falsch verstanden.

mit dem alpha wert kann man
eine farbe durchsichtig auf ein image zeichnen,
so dass die alte farbe noch durchschimmert.
aber wenn man image1 dann auf image2 malt,
werden die farben von image1 komlett über die von image2 gemalt.

was ich will ist,
dass - wenn man image1 auf image2 einmalt -
die transparenten farben in image1 nicht über image2 gemalt werden.
also transparente farben, wie bei einem gif.
ein gif hat ja transparente pixel,
und wenn man das gif malt,
werden diese pixel einfach ausgelassen,
und nichts wird übermalt.

wie gesagt, trotzdem danke natürlich,
olli
 
O

ollilebowski

Gast
am besten mach ich einen neuen thread auf,
in dem die frage genauer gestellt wird.
in "allgemeines"
"Image mit durchsichtigen farben wie bei GIF?"
 
G

gast0815

Gast
Nein!
Der hat schon recht!
Aber du mußt auf ein BufferedImage zeichnen und beim Erstellen
Code:
BufferedImage img=new BufferedImage(deineHöhe,deineBreite,img.TYPE_INT_ARGB)
eingeben.
Dann wird das Pixel das du transparent zeichnest auch transparent wenn du das BufferedImage zeichnest!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Transparente Farbe von (Buffered) Image Spiele- und Multimedia-Programmierung 10
algorismi Transparente Overlays in JVLC Spiele- und Multimedia-Programmierung 4
F Transparente Polygone Spiele- und Multimedia-Programmierung 3
dummycoders Android Studio - Button ändert Farbe erst nach Delay? Spiele- und Multimedia-Programmierung 5
R Problem bei Farbe ändern/4Gewinnt Spiele- und Multimedia-Programmierung 5
W Java3D: Farbe von Objekten stimmt nicht mit übergebenem RGB-Wert überein Spiele- und Multimedia-Programmierung 9
G BufferedImage -> Farbe wechselt willkürlich Spiele- und Multimedia-Programmierung 15
truesoul Picking und Farbe ändern Spiele- und Multimedia-Programmierung 3
F Farbe ändern bei Überlappung Spiele- und Multimedia-Programmierung 2
M g.setColor erzeugt falsche Farbe? Spiele- und Multimedia-Programmierung 5
D Text3D Farbe aendern Spiele- und Multimedia-Programmierung 2
E Durch Klick auf den JButton will ich die Farbe ändern? Spiele- und Multimedia-Programmierung 8
DEvent [2D] Farbe bestimmten Pixels eines Bildes ändern Spiele- und Multimedia-Programmierung 3
F QuadArray, Farbe auf beiden Seiten? Spiele- und Multimedia-Programmierung 4
T Position eines Image verändern mithilfe eines Timers Spiele- und Multimedia-Programmierung 6
K Video: Per Image Information Spiele- und Multimedia-Programmierung 3
M Image unpainten Spiele- und Multimedia-Programmierung 3
B Bild ohne Image auf die Festplatte streamen Spiele- und Multimedia-Programmierung 4
X Android Slick AE Image Pfad Spiele- und Multimedia-Programmierung 3
A Drehen von einem Image Spiele- und Multimedia-Programmierung 4
C Mouseover Area genau wie Image Spiele- und Multimedia-Programmierung 8
L Slick-Image aus byte-array erzeugen Spiele- und Multimedia-Programmierung 2
0 2D Spiel Welt scrollen bzw Image erweitern Spiele- und Multimedia-Programmierung 2
T jME3: awt.Image <-> jME3.Image Spiele- und Multimedia-Programmierung 7
F nur Ausschnitt eines Image zeichnen Spiele- und Multimedia-Programmierung 9
F Hintergrund bei Image entfernen Spiele- und Multimedia-Programmierung 4
S Image-Einbindung Spiele- und Multimedia-Programmierung 5
StrikeTom .gif animation als image abspielen Spiele- und Multimedia-Programmierung 2
T Glüh effekt um Image Spiele- und Multimedia-Programmierung 9
radiac Aktuelles ScreenBild als Image? Spiele- und Multimedia-Programmierung 6
Stillmatic1985 Buffered Image drucken Spiele- und Multimedia-Programmierung 1
P Culling von Image-Objekten Spiele- und Multimedia-Programmierung 3
E Alternative zu import com.sun.image.codec.jpeg.JPEGCodec ? Spiele- und Multimedia-Programmierung 1
E JPCT background image Spiele- und Multimedia-Programmierung 3
P Grosses Bufferd Image Drucken Print API Spiele- und Multimedia-Programmierung 3
G Image drucken Spiele- und Multimedia-Programmierung 17
S Image will nicht laden Spiele- und Multimedia-Programmierung 3
A Image in BufferedImage konvertieren Spiele- und Multimedia-Programmierung 2
O Image dynamisch erstellen. Spiele- und Multimedia-Programmierung 6
G Punkt in Image auf Transparenz prüfen Spiele- und Multimedia-Programmierung 6
G Bereich im Image löschen Spiele- und Multimedia-Programmierung 4
H image.setRGB() zeichnet falsch Spiele- und Multimedia-Programmierung 3
D Welcher Image Typ am besten für 2D-Spiele geeignet? Spiele- und Multimedia-Programmierung 5
O Image konvertieren in monochrom scharz/weiß Spiele- und Multimedia-Programmierung 3
F Image eines bestimmten Bereichs eines JPanels erstellen Spiele- und Multimedia-Programmierung 4
T Spiel als Vollbild starten mit Image als HIntergrund Spiele- und Multimedia-Programmierung 8
S Image to BufferedImage Spiele- und Multimedia-Programmierung 3
D Image.getGraphics() in einem Frame Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen

Neue Themen


Oben