direkt Zeichnen



  • Original erstellt von Gregor:
    Wenn du die Sachen nicht immer neu zeichnen möchtest, dann kannst du sie gleich zweimal zeichnen. Einmal auf das Graphics-Objekt der Komponente und einmal auf ein Graphics-Objekt eines BufferedImage. In der paint-Methode oder paintComponent-Methode der Komponente zeichnest du dann das BufferedImage auf die Komponente.

    Interessant ... ist das performanter? Du weisst ja ... ich habs net so mit malen 🙂


  • Mod

    Original erstellt von CengizS:
    Interessant ... ist das performanter? Du weisst ja ... ich habs net so mit malen 🙂

    Kommt auf die Anzahl der Zeichenoperationen an. Ein Bild zu zeichnen dauert immer gleich lange (und geht auch sehr schnell).

    ...da fällt mir ein, dass ich mal wieder an dem Tut weiterschreiben sollte (bin in letzter Zeit leider nicht dazu gekommen). 🙄



  • Gut Ding will Weile haben - hat man uns gelehrt 😉



  • haut irgendwie nicht hin:
    [java]
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import java.awt.Graphics;
    import javax.swing.JPanel;

    public class malen
    {
    public static void main(String args[])
    {
    JFrame f = new JFrame("trest");
    f.setLocation(0,0);
    f.setSize(400,400);

    JPanel p = new JPanel()
    {
    public void paint(Graphics g)
    {
    g.drawLine(7,7,40,40);
    }
    };
    p.setLocation(5,5);
    p.setSize(100,100);
    f.getContentPane().add(p);
    Graphics gg = p.getGraphics();
    if (gg != null)
    {
    gg.drawString("juhu",10,10);
    }
    else
    {
    f.getContentPane().add(new JLabel("mh"));
    }
    f.setVisible(true);
    }
    }[/code]

    bekomme immer die ausgabe "mh".



  • *push* 🙂


  • Mod

    Ich hatte schonmal ein ähnliches Problem. Anscheinend wird das Graphics-Objekt nicht gleich beim Konstruieren des Panels erstellt, sondern erst später irgendwann.

    EDIT : Du kannst ja mal im Code nachgucken.

    [ Dieser Beitrag wurde am 05.02.2003 um 20:32 Uhr von Gregor editiert. ]



  • [ hier stand vorpubertäres Zeug ]

    Danke für Deinen fachlich äußerst Wertvollen Beitrag!!!

    [ Dieser Beitrag wurde am 06.02.2003 um 11:49 Uhr von CengizS editiert. ]


  • Mod

    Original erstellt von <stevg @ abendschule>:
    [ hier stand vorpubertäres Zeug ]

    Garnicht. :p

    Ein Graphics-Objekt wird es erst dann geben, wenn das Panel das erste mal gezeichnet wurde. Angenommen, es gäbe früher ein Graphics-Objekt, dann würde das, was du auf das Graphics-Objekt zeichnest niemals angezeigt werden, da das Panel ja noch garnicht sichtbar ist und beim Zeichnen des Panels alles, was du vorher mit dem Graphics-Objekt gemacht hast, überzeichnet werden würde. Es macht somit keinen Sinn, früher ein solches Objekt zu haben.

    ...naja : Das wird so nicht ganz richtig sein, aber es geht in die richtige Richtung. Hauptsache, du weißt in etwa, warum es Unsinn ist, so früh zu zeichnen.

    Wenn etwas immer auf das Panel gezeichnet werden soll, dann überschreib die paintComponent-Methode

    [ Dieser Beitrag wurde am 06.02.2003 um 11:48 Uhr von CengizS editiert. ]



  • Original erstellt von <stevg @ abendschule>:
    [ hier stand vorpubertäres Zeug ]

    [ und der hat sich dazu hinreißen lassen ... ]

    [ Dieser Beitrag wurde am 06.02.2003 um 11:49 Uhr von CengizS editiert. ]



  • Hört mit dem Unsinn auf - wenn ihr das Problem lösen könnt postet ansonsten lasst den Thread einfach stehen ... trollen könnt ihr im OT-Forum. Danke!

    [ Dieser Beitrag wurde am 06.02.2003 um 11:51 Uhr von CengizS editiert. ]


Anmelden zum Antworten