Announcement

Collapse
No announcement yet.

Bildausschnitt eines JPanels in ein Image kopieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bildausschnitt eines JPanels in ein Image kopieren

    Hallo,<br>
    ich habe folgendes Problem: ich benutze ein JPanel um eine Grafik (mit den g.drawXXX()-methoden gezeichnet)anzuzeigen. nun möchte ich einen teilbereich in ein neues Image-object kopieren um es weiter zubearbeiten. Ich konnte aber keine methode finden, mit der ich auf den inhalt des JPanels nach dem zeichen zugreifen kann. notfalls könne ich auch jeden pixel einzeln auslesen, eine methode hierzu kenne ich auch nicht. Die ideale Methode wäre: <code>g.getImage(teilbereichs-koordinaten)</code>. gibt es etwas in der art?<br>

    Danke, Gruss Rico

  • #2
    Hi Rico,<br>
    Du brauchst ein java.awt.image.BufferedImage:
    <pre>
    import java.awt.image.*;

    // in Constructor of MyJPanel :
    bufferedImage = (BufferedImage)this.createImage(this.getWidth(), this.getHeight());

    // draw on the image in MyJPanel:
    public void paint(Graphigs g) {
    super.paint(g);
    // g.drawXXX() goes here
    Graphics2D = bufferedImage.createGraphics();
    g2D.drawXXX();
    g2D.dispose();
    }

    public Image getSubimage() {
    BufferedImage subImage = bufferedImage.getSubimage(x, y, w, h);
    return subImage;
    }
    <pre>
    Gruss Klau

    Comment


    • #3
      Hi Klaus,<br>
      ich hab deinen tip ausprobiert und bin wieder auf ein altes problem gestossen: der aufruf von createImage() gibt null zurück, so das ich dann in der paint()-methode eine nullpointerexception bekomme. liegt das evtl. daran das der aufruf im konstruktor steht? ist das problem bei dir auch aufgetaucht?
      <br>
      Gruss Ric

      Comment


      • #4
        Hallo Rico,<br>
        dass createImage() null liefert, könnte in der Tat daran hängen,<br>
        dass der Constructor noch nicht durchlaufen ist.<br>
        Ich hab jetzt dafür leider auf die Schnelle auch keine Lösung.<br>
        Wenn mir noch was einfällt, melde ich mich.
        <p>
        Klau

        Comment


        • #5
          Hi Rico,<br>
          vielleicht geht im Konstruktor von JPanel:<br>
          BufferedImage bufferedImage = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_RGB);<br>
          Achte darauf, dass this.getWidth() bzw. this.getHeight() != 0 sind.<br>
          Damit sollte ein image != null erzeugt werden!
          <p>
          Gruss Klau

          Comment


          • #6
            Hallo,<br>
            ja so hat es funktioniert. <br>
            Danke, Gruss Ric

            Comment

            Working...
            X