Image erstellen.

Xym

Erfahrenes Mitglied
Ich glaube, dass es eine ganz einfach Lösung für das Problem gibt, aber ich finde sie einfach nicht...
Es geht darum das ich eine Grafik selber male. Diese will ich in ein Bild speichern und das dann auch wieder zeichnen.
Im Anhang würde ich z.B. alles im roten Bereich in einem Bild speichern wollen und dieses dann hinter der neuen Grafik malen.
Bin für jede Hilfe dankbar :) .
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    59,1 KB · Aufrufe: 56
Ich glaube, dass es eine ganz einfach Lösung für das Problem gibt, aber ich finde sie einfach nicht...
Es geht darum das ich eine Grafik selber male. Diese will ich in ein Bild speichern und das dann auch wieder zeichnen.
Im Anhang würde ich z.B. alles im roten Bereich in einem Bild speichern wollen und dieses dann hinter der neuen Grafik malen.
Bin für jede Hilfe dankbar :) .

Suchst du eventuell soetwas?
http://www.exampledepot.com/egs/javax.imageio/Graphic2File.html

Siehe auch http://download.oracle.com/javase/1.4.2/docs/api/javax/imageio/ImageIO.html
 
Die Links sind zwar gut und interessant, dennoch hat es mir nicht geholfen den roten teil in ein Image bzw. BufferedImage zu bekommen...
 
Also was ich vor habe ist, dass ich 1. das gemalte bild speichern will. 2. das Bild drucken.
Das einzige was euch helfen könnte wäre die paint-methode:

Java:
public void paint(Graphics g)
  {
   if(bild==true)
   {
     g.drawImage(ladebild,0,120,null);
     bild=false;
   }
   if(start==0)
   {
     g.setColor(Color.white);
     g.fillRect(1,120,1000,1000);
     start=1;
   }
   if(yk>=120)
   {
    if(s==true)
    {
      if(t==2)
      {
        g.setColor(new Color(f1,f2,f3));
        g.drawLine(x[i-2],y[i-2],xp,yp);
        t=0;
        i=0;
      }
    }

    if(n==true)
    {
      g.setColor(Color.white);
      g.fillRect(1,120,1000,1000);
      n = false;
      p = false;
      l = false;
      k = false;
      r = false;
    }

    if(r==true)
    {
     if(rs==1)
     {
      if(t==2)
      {
        g.setColor(new Color(f1,f2,f3));
        g.drawRect(x[i-2],y[i-2],x[i-1],y[i-1]);
        t=0;
        System.out.println(rs);
      }
     }
     if(rs==2)
     {
      if(t==2)
      {
        g.setColor(new Color(f1,f2,f3));
        g.fillRect(x[i-2],y[i-2],x[i-1],y[i-1]);
        t=0;
        System.out.println(rs);
      }
     }
    }

    if(p==true)
    {
     if(rs==1)
     {
       g.setColor(new Color(f1,f2,f3));
       g.drawPolygon(x,y,ne);
     }
     if(rs==2)
     {
      g.setColor(new Color(f1,f2,f3));
      g.fillPolygon(x,y,ne);
     }
    }

    if(k==true)
    {
     if(rs==1)
     {
       if(t==2)
       {
         g.setColor(new Color(f1,f2,f3));
         g.drawOval(x[i-2],y[i-2],x[i-1],y[i-1]);
         t=0;
       }
     }
     if(rs==2)
     {
      if(t==2)
      {
        g.setColor(new Color(f1,f2,f3));
        g.fillOval(x[i-2],y[i-2],x[i-1],y[i-1]);
        t=0;
      }
     }
    }

    if(l==true && ls==true)
    {
      g.setColor(new Color(f1,f2,f3));
      g.fillOval(xk,yk,stärke,stärke);
    }
   }
  }

Also xk,yk sind die Koordinaten von der Maus.
Die Arrays x[] und y[] werden nach neuem Buttonklick gelöscht.
Hoffe das hilft irgendwie weiter.

Ahso das Problem das die alten Sachen übermalt werden habe ich so gelöst das ich die Grafik im JFrame direkt mit Paint male, und nicht in einer neuen Klasse mit paintComponent male.
 
Also was ich vor habe ist, dass ich 1. das gemalte bild speichern will. 2. das Bild drucken.

Ich würde es etwa so versuchen...
Java:
public void savePicture() {
		//Zielpfad holen
		
		//BufferedImage generieren
		BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);	
		Graphics2D g2d = bufferedImage.createGraphics();
		
		//g2d bemalen oder Graphics der bemalten Component übertragen
		
		//speichern
		File file = new File(targetPath);
		ImageIO.write(bufferedImage,fileType,file);
}

public void printPicture() {
		//PrintJob generieren
		PrintJob printJob = getToolkit().getPrintJob(frame, jobtitel, properties);	
		Graphics2D g2d = printJob.createGraphics();
		
		//g2d bemalen oder Graphics der bemalten Component übertragen
		
		//drucken
		printJob.end();
}
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Xym
Es funktioniert leider immer noch nicht .... :(

Also beim Speichern ist das Problem, dass er es nicht als jpg, gif oder png abspeichert sondern einfach alls Datei.

Das Speichern hatte ich bis jetzt so geregelt :
Java:
JFileChooser fc = new JFileChooser();
          int state = fc.showSaveDialog( null );

          if ( state == JFileChooser.APPROVE_OPTION )
          {
            File file = fc.getSelectedFile();
              try
              {
                BufferedImage bufferedImage = new BufferedImage(1000,800, BufferedImage.TYPE_INT_RGB);
                Graphics2D g2d = bufferedImage.createGraphics();
                ImageIO.write(bufferedImage,"png",file);
              }
              catch(IOException i ){ }

          }
          else
          System.out.println( "Auswahl abgebrochen" );

Und beim Drucken findet er den Befehl pjog.createGraphics(); nicht.
Obwohl ich diese Packe importiere:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.print.*;
import javax.imageio.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.print.*;
import javax.swing.filechooser.*;

Drucken hab ich bis jetzt so :
Java:
         PrinterJob pjob = PrinterJob.getPrinterJob();
         try
         {
          if ( pjob.printDialog() == false )
          return;
          Graphics2D g2d = pjob.createGraphics();
          pjob.print();
          pjob.end();
         }

         catch(PrinterException ep)
         {

         }
 

Neue Beiträge

Zurück