# Graphics oder Graphics2D Zeichenfunktion gesucht?



## vrcat (6. Dez 2005)

Hallo zusammen,

ich suche eine Möglichkeit die Helligkeit der Zeichenfarbe zu manipulieren. Im Detail habe ich eine abstrakte Superklasse „Shape“ für meinen Graphen. Alle Elemente die von dieser Klasse abgeleitet sind müssen eine Methode „paintShape“ implementieren. In dieser Methode kann man festlegen wie das „Shape“ auszusehen hat inklusive Farben (durch einfache Zeichenmethoden der Graphic-Instanze).  
Nun möchte ich gerne allgemein, also in der abstrakte Superklasse „Shape“ festlegen, dass alle Kinder dieser Klasse sich etwas Blasser darstellen, sollten sie Selektiert sein, ohne das das in den Kindern extra beachtet werden muss.

Mit freundlichen Grüßen
vrcat


----------



## MPW (31. Dez 2005)

Das müsste doch einfach über die Farben gehen oder?


----------



## Guest (31. Dez 2005)

Deine Farben kannst du so erstellen

```
private static final Color3f BLACK = new Color3f(0f,0f,0f);
	private static final Color3f WHITE = new Color3f(1f,1f,1f);
```
Kannst dann über die class Material in deine objecte einbinden.


----------



## Caesar (31. Dez 2005)

Gast hat gesagt.:
			
		

> Kannst dann über die class Material in deine objecte einbinden.


class Material? Er braucht die Funktion für 2D, nicht für 3D.

Um die Shapes blasser zu zeichnen, müsstest du die RGB-Werte für jeden Pixel der Anzeige erhöhen oder den Alpha-Wert etwas verringern, damit es etwas transparent wird. Wie man das aber konkret macht, weiß ich nicht :? 
Du könntest vielleicht in der abstrakten Superklasse die eigentliche Zeichenmethode schreiben, die ein Graphics-Objekt der paintShape-Methode übergibt, sich aus den Graphics ein BufferedImage macht, dessen Pixel alle einzeln durchläuft und die RGBA-Werte so modifiziert, dass alles etwas blasser wird, und dieses Image auf die übergebenen Graphics zeichnet.
 :autsch: Okay, war nur so ne Idee...


----------



## Illuvatar (31. Dez 2005)

Hm der Fred is zwar uralt, aber:
du kannst mit Graphics2D#setComposite nen AlphaComposite setzen, das dann eben einen geringeren Alpha-Wert hat.


----------

