Image-Funktionen

ts230

Gesperrt
Hallo.
Ich möchte mal wissen,wie kann ich alle Farben mit dem rgb-wert(255,255,255) mit einer Farbe aus einem JColorChooser ersetzen? Geht das überhaupt mit Sachen aus der Java-API?
 
Gut. Ich google dann mal.
Noch 'ne Frage;Die Bilder sind in einem JAR und werden Auf Buttons angezeigt.
Dann könnte ich doch einfach das Image der Buttons in eine Variable Schreiben,die verändern und zurück auf den Button anzeigen?
Meint ihr das tuts als ImageFunktion?
Kommt von hier

Ich hab jetzt mal ein bisschen Java-code zusammengezimmert:
Java:
//"changeColorBtn want int and BufferedImage to eat now!"
//If it fails,it just returns null
public BufferedImage changeColorBtn(int Clr,BufferedImage aIm){
BufferedImage aAImage = new BufferedImage(84,84,BufferedImage.TYPE_BYTE_BINARY);//Make a new Instance of BufferedImage...
 try{//TRY all this stuff because maybe it explodes
MapColorsFilter filter = new MapColorsFilter(0xffffffff, Clr);//..Set the colors to replace...   
filter.filter(aIm, aAImage);//...Filter it...
 }
 catch(Exception ex){
ex.printStackTrace();
aAImage=null;
}//return null in case it explodes!
finally{//This code will ALLWAYS run even if it Failed;
return aAImage;//and return our changed Image!
}
}


Da kommt ein BufferedImage und die Farbe zu Ersetzen rein,und rasu kommt das Modifizierte Image. Ich denke doch? Die Default-Background ist ja Weiß(255,255,255)Bei der HEX-Angabe sind doch R-G-B-Alpha?
 
Zuletzt bearbeitet von einem Moderator:
Ja, geht. Ich würde das Bild aber gleich in eine Klassenvar. speichern, als Icon wird warscheinlich nur die Referenz auf diese gespeichert, somit greift eine Änderung in der Klassenvar. sofort. (bzw. nach repaint())
Die Seite kenne ich nicht, suche idR. nur nach deutschen Ressourcen, kann zwar englisch, aber lesen und gleichzeitig übersetzen ist für mich relativ anstrengend, deshalb greife ich nur darauf zurück wenn ich im deutschen nichts finde. (btw. würde ich, ich habe bisher immer etwas im deutschen gefunden, das einzige was ich ab und zu gebraucht habe war die API, und selbst da findet man falls vorhanden sofort eine deutsche Übersetzung der jeweiligen Seite.)

Beim Source kann ich dir eigendlich nicht helfen, habe soetwas noch nie gebraucht. Ich habe am Anfang wegen den Chooser angenommen, dass das soetwas wie ein Zeichenprogramm oder s. ä. wird. Aber wenn dus auf nen JButton anzeigst wohl eher nicht. Ich würde, wenn es möglich ist schnell mal mit Paint mehrere Versionen der Bilder anfertigen lassen, und ihm nicht erst zur Programmlaufzeit umrechnen lassen. Kommt halt drauf an.

(btw. denke mal über deine Variablennamen nach. Ich wüsste nicht was ich mir unter einen "aIm" oder "aAImage" vorstellen könnte. Da wäre soetwas wie "result" für die Rückgabe, und "image" für das Parameter wohl um einiges optimaler. Aber jedem das seine.)
 
Das ist ein Projekt das ich mit einem Freund zusammen mache.
Das soll ein Taschenrechner sein den man "stylen" kann. Der ist übrigens in Englisch--Ich wohn ja in den USA :)
Ich werds mal testen.Ein problem;Der button gibt mir ein Icon zurück und die Funktion ein BufferedImage.Wie kann ich BufferedImage zu Icon und umgekehrt konvvertieren?

Wenn ich mit
Java:
BufferedImage tempImage=new BufferedImage(84,84, BufferedImage.TYPE_BYTE_BINARY);
Icon icon = jButton1.getIcon();
icon.paintIcon(jButton1, tempImage.getGraphics(), 84, 84);
BufferedImage imgResult = changeColorBtn(0xff000000,tempImage);
ImageIcon iconRes = new ImageIcon(imgResult);
jButton1.setIcon(iconRes);
Die funktion "changeColorBtn" ist die Gleiche.

Kriege ich das:
Exception in thread "AWT-EventQueue-0" java.lang.Error: Application class joshtristancalcualtor.JoshTristanCalcualtorApp failed to launch
at org.jdesktop.application.Application$1.run(Application.java:177)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:226)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)
Caused by: java.lang.NullPointerException
at joshtristancalcualtor.JoshTristanCalcualtorView.<init>(JoshTristanCalcualtorView.java:239)
at joshtristancalcualtor.JoshTristanCalcualtorApp.startup(JoshTristanCalcualtorApp.java:20)
at org.jdesktop.application.Application$1.run(Application.java:171)
... 8 more

Und das ganze Programm startet nicht!
 
Zuletzt bearbeitet von einem Moderator:
Zurück