Rechteck zeichnen auf JPanel?

Okay, ich habe nun ein Buffered Image erstellt, welches auf ein extended JPanel geschoben wird, wo ich es als Hintergrund machen will.

Nun aber ein großes Problem: Warum sind meine Blobs nicht sichtbar auf dem JPanel, wenn ich diese nach dem Mausklick auf SinglePlayer geaddet habe, sondern nur das SingePlayer-JPanel ohne Blobs? Liegt es vielleicht daran das ich es irgendwo überschreibe? Wenn ja, wo tu ich das? Ich habe gerade keinen blassen Schimmer mehr, und morgen muss ich meinem Lehrer was zeigen, aber es funktioniert ja grad gar nix mehr:

Hier ist das Projekt, auch wenns schwer ist, bitte fummel dich mal dadurch und versuche, meinen Fehler auszuarbeiten :(
Code:
solved

Die Stelle, wo ich das Bild zum JPanel hinzufüge:
Code:
solved
 
Zuletzt bearbeitet:
joar kann ich machen setz mich gleich ran :-)

//EDIT

ne compilierbare version wär schon besser gewesen^^
 
Zuletzt bearbeitet:
Ist kompilierbar, ich benutze das etwas seltener benutzte Tool namens Javaeditor :)

Dankeschön, echt lieb, sag bescheid, wenn du was gefunden hast :)

Edit:\\

Eventuell einfach import Variables.*; löschen in der Datei SinglePlayerPanel.java, war zu testzwecken, ich weiß nicht ob ich das mit hochgeladen hab :)

Edit:\\

Oops, und einige pnlsingle. wurden auch noch nicht in pnlsinglearea. umgeschrieben :(

Edit:\\

So, bei mir compiled es nun fehlerfrei:
Code:
solved
 
Zuletzt bearbeitet:
lösch ma aus SingelPlayerPanel

Java:
setLayout(null);

die größe von dem image stimmt auch noch net ;-)

und du hast da noch einige grafik bugs drinne xD
 
Zuletzt bearbeitet:
Danke, hat geklappt! <3

Edit:

Ich zeichne nun auf mein BufferedImage drauf mit
Variables.pnlsinglearea.drawSchleim(new Color(0xF44E5D), Variables.redblob.getLocation().x, Variables.redblob.getLocation().y, Variables.redblob.getWidth(), 90);

Aber es entstehen "kleine schwarze ritzen", wie kriegt man die weg? Anderer BufferedImage Typ ?

Pic:
Code:
solved
 
Zuletzt bearbeitet:
Danke, funktioniert :) <3

Ich lasse nun die Blobs eine Minute auf dem Bild fahren und danach ist das Bild schön bunt.
Nun würde ich gerne wissen, wie ich berechnen kann, wer am meisten Farbe auf dem Bild gemacht hat.

Nun zu meiner nächsten Frage: Sollte ich Pixel für Pixel nachgucken, was für eine Farbe dort besteht und diese mit dem Schleim vergleichen (zum Beispiel If pxlcolor = new Color(0x6FEB60))?
Wenn ja, wie mach ich das? Mit zwei While-Schleifen kann man das recht gut realisieren und Reihe für Reihe durchgehen, aber wie kann ich die (Hex-)Farbe eines Pixels dann auslesen? :)

Vllt gibt es ja noch andere Möglichkeiten (mit weniger Rechenaufwand), obwohl ich mir das schwer vorstellen kann gerade ;)
 
Java:
        int red=0,blue=0,green=0,yellow=0;
        int width=img.getWidth(); //img is dein BufferedImage
        int height=img.getHeight();
        for (int x=0;x<width;x++) {
            for (int y=0;y<height;y++) {
                switch (img.getRGB(x,y)) {
                    case 7334752 : red++; //dein farbcode als integer z.b 0x6FEB60==7334752
                        break;
                    case 7334753 : blue++; //7334753 != blau des is nur n beispiel
                        break;
                    case 7334754 : green++; //s.o.
                        break;
                    case 7334755 : yellow++; //s.o.
                        break;
                    default :
                        break;
                }
            }
        }
 
Danke :)

Genauso hätte ich es auch gemacht, die Schleifen mein ich :)

Wenn ich deinen Code nun nehme und ihn auszuführen versuche, gibt er mir mit..
JOptionPane.showMessageDialog(null, red, "Test", JOptionPane.OK_CANCEL_OPTION);
...0 aus.. Das heißt wohl, das ser nix in der Farbe findet. Ist die Farbe richtig umconvertiert von dir?

Oder liegt es an was anderem?

Hier ist mein Projekt nochmal, das aktuelle:
Code:
solved

Du findest alles in der singleplayer.java unter:
Code:
solved


Edit:
Wo ich schon grad dabei bin und du das Projekt so schön vor dir liegen hast: Wie greif ich auf getContentPane() aus der SinglePlayer Klasse zu ? :) Wo sollte ich was am besten übergeben?
 
Zuletzt bearbeitet:
die integer werte sind nur beispiele...
Java:
case 7334753 : blue++; //7334753 != blau des is nur n beispiel <<<-------
also musst du dir noch die richtigen werte ausrechnen z.b:
Java:
new Color(0x6FEB60).getRGB();

zum rest heut abend mehr ich schreib gleich ne wichtige klausur deswegen hab ich jetzt leider keine zeit...
 

Neue Beiträge

Zurück