imageObserver



  • hallo

    ich möchte mit hilfe von BufferedImage ein image erstellen indem ich die einzelnen pixel mit farbwerten belegen kann. jetzt habe ich aber probleme mit drawImage und zwar verlangt die methode einen ImageObserver. und ich habe keine ahnung was das ist kann mir jemand weiter helfen. hab mal eine test klasse erstellt die mir ein einfaches image erstellen soll und anschliessen ausgeben.

    public Test() throws HeadlessException {
            super("MyFrame");
            this.setSize(300,300);
            this.setVisible(true);
        }
    
        public BufferedImage setimage(){
            BufferedImage a = new BufferedImage(300,300,BufferedImage.TYPE_INT_BGR);
    
                    for(int i=0;i<100;++i){
                        for(int n =0;n<100;++n){
                            a.setRGB(i,n,1);
                        }
                    }           
            return a;
        }
        public void paintComponent(Graphics g){
            super.paintComponents(g);
            buff = setimage();
            g.drawImage(buff.getGraphics(),0,0,Color.black,"Hier kommt der ImageObserver rein");    
        }
    

    [ Dieser Beitrag wurde am 20.01.2003 um 22:49 Uhr von stef editiert. ]


  • Mod

    Nimm einfach null.


  • Mod

    BTW:
    [java]
    public void paintComponent(Graphics g){
    super.paintComponents(g);
    buff = setimage();
    g.drawImage(buff.getGraphics(),0,0,Color.black,"Hier kommt der ImageObserver rein");
    }[/code]
    Überleg dir mal, ob hier wohl ein guter Ort für das "buff = setimage()" ist. Außerdem gehört in die drawImage-Methode AFAIK nur "buff" rein und nicht "buff.getGraphics()".


  • Mod

    nochmal BTW:
    [java]
    public BufferedImage setimage(){
    BufferedImage a = new BufferedImage(300,300,BufferedImage.TYPE_INT_BGR);

    for(int i=0;i<100;++i){
    for(int n =0;n<100;++n){
    a.setRGB(i,n,1);
    }
    }
    return a;
    }[/code]
    1. Ich rate dir einfach mal, bei Bildern, die Laufvariablen die letztendlich Koordinaten angeben, Namen wie "x" und "y" zu wählen. Das liest sich irgendwie besser als "i" und "n".

    2. Wahrscheinlich wirst du bei dem Bild nichtmal sehen, dass du in die obere linke Ecke ein ganz leicht bläuliches Quadrat gemalt hast. Das ist so dunkel, dass es sich wohl nicht vom Schwarz des restlichen Bildes abhebt. Nimm doch weiß:

    a.setRGB(i,n,0x00ffffff);

    [ Dieser Beitrag wurde am 21.01.2003 um 03:26 Uhr von Gregor editiert. ]



  • danke für die hinweise werds mal ausprobieren.
    wegen indexes (i und n) das beispiel soll nur ein test sein um zusehen wie das ganze funktioniert. später werde ich das ganze schon ändern.

    Überleg dir mal, ob hier wohl ein guter Ort für das "buff = setimage()" ist

    ja muss schon dort sein da später das bild ständig ändert



  • hallo

    wie kann ich den Hintergrund des Image auf weiss setzten. denn jetzt ist es so das er schwarz ist. also eine möglich keit ist ja einfach jedes pixel einzeln auf weiss zu setzten aber gibt es da nicht beim initialisieren irgendwie die möglichkeit dies zu tun?


  • Mod

    Du kannst es nicht mit weiß initialisieren. Du kannst dir aber mit "createGraphics" ein Graphics2D-Objekt von dem Bild holen, auf das du dann mit "fillRect" ein weißes Rechteck in Größe des Bildes malen kannst. Dann hast du ein weißes Bild.



  • danke so funktionierts.


Anmelden zum Antworten