Graphics, vereinzelte Pixel etc.

thomy800

Erfahrenes Mitglied
Hallo,

Also, ich möchte Pixel von einem Bild in Graphics (evtl. Graphics2D) schreiben, so dass das Bild nur teilweise kopiert wird. (Nach komplizierten Berechnungen wird für jeden Pixel entschieden, ob der kopiert werden soll oder nicht. ) Nun is das Problem, dass Graphics keine Methoden beinhaltet, nur einzelne Pixel zu schreiben. Man kann nat. Linien malen, die die Länge von 1 Pixel haben, aber das hat ein seeehr schlechtes Zeitverhalten.

Bisher habe ich sowas immer über ein BufferedImage gelöst, indem ich ein WritableRaster abgefragt habe und davon dann mir die Daten habe geben lassen und sie geändert habe..

Aber theoretisch müssten in Graphics doch auch die Graphik-Informationen (Farbwerte der Pixel) gespeichert sein, wie sonst könnten die Methoden drawImage etc. funktionieren.

Daher meine Frage, wie bekomme ich die Graphik-Informationen aus Graphics, oder wie male ich SCHNELL vereinzelte Pixel?

mfG thomy




PS: Struktur sieht in etwa so aus:
Java:
class abc {
Image source;
//...
public void draw(Graphics g) {
/...
}
}
so, dass im Prinzip nur draw(..) aufgerufen werden muss, ohne zusätzliche Informationen übergeben zu müssen. Graphics g kommen von wo anders, also nicht von source, sondern source soll da reingemalt werden. (hoffe, das war verständlich^^)
 
Zuletzt bearbeitet:
Die Idee mit dem BufferedImage ist doch gut. Nur den WritableRaster würde ich weglassen. Einzelne Pixel kannst Du mit setRGB setzen bzw. mit getRGB lesen. Das Performanceverhalten ist auch gut.

Grüße
 
omg^^
Da ich ein BufferedImage zum gepufferten Malen verwende, habe ich die ganze Zeit gedacht, ich müsste dieses Image an die draw-Methode übergeben, um darauf zu malen. Aber jetzt ist klar, ich kann ja auch ein internes (2.) BufferedImage erzeugen, welches ich dann in Graphics male, also letztendlich auf das erste BufferedImage.
Vielen Dank für die Anregung :)

PS: nettes Programm, das mit dem Plasma^^

mfG thomy
 
Zurück