2Danke
ERLEDIGT
JA
JA
ANTWORTEN
14
14
ZUGRIFFE
854
854
EMPFEHLEN
-
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
.
-
11.04.11 12:46 #2
Suchst du eventuell soetwas?
http://www.exampledepot.com/egs/java...phic2File.html
Siehe auch http://download.oracle.com/javase/1....o/ImageIO.htmlJeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
11.04.11 12:56 #3
- Registriert seit
- Jun 2009
- Beiträge
- 870
Les dir mal das Kapitel hier durch: http://openbook.galileocomputing.de/...sel_20_006.htm
Zum Zeichnen könnte das hier noch hilfreich sein: http://openbook.galileocomputing.de/...d78fd92dd27a56Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Die Links sind zwar gut und interessant, dennoch hat es mir nicht geholfen den roten teil in ein Image bzw. BufferedImage zu bekommen...
-
12.04.11 14:32 #5
Wo genau kommst du nun nicht weiter? Hast du eventuell 'nen Codeschnipsel für uns?
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
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:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
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.
-
12.04.11 17:20 #7
Ich würde es etwa so versuchen...
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
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(); }
Geändert von HonniCilest (12.04.11 um 17:31 Uhr)
Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
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 :
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
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 :
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14
PrinterJob pjob = PrinterJob.getPrinterJob(); try { if ( pjob.printDialog() == false ) return; Graphics2D g2d = pjob.createGraphics(); pjob.print(); pjob.end(); } catch(PrinterException ep) { }
-
Soweit ich das beurteilen kann ist dein Problem unlösbar
-
Es muss eine Möglichkeit geben.Informatikerweisheit:
Jedes Problem ist durch die Beseitigung seiner Ursachen lösbar.
-
Ich hoffe, dass jemand anders noch sinnvolle Beiträge hat.
-
12.04.11 21:19 #12
- Registriert seit
- Jun 2009
- Beiträge
- 870
Dein größtes Problem ist, dass du dich scheinbar nicht so ganz mit der Sache auskennst. Das Bild kann nur als Datei gespeichert werden (welche Speichermethode sonst?)Also beim Speichern ist das Problem, dass er es nicht als jpg, gif oder png abspeichert sondern einfach alls Datei.
Die Dateiendung bestimmst du selbst. Wichtig ist, dass sie mit dem Inhalt übereinstimmt. Die Datei kann natürlich ein JPEG-Bild sein, und trotzdem ohne Dateiendung abgespeichert werden. Du solltest dir vielleicht grundlegende Computerkenntnisse aneignen.
Dein Speichern kann außerdem nicht funktionieren, weil du in das Graphics-Objekt, das du dir holst, nicht hinein zeichnest.
Die Methode PrinterJob.createGraphics(); existiert nicht. Deswegen kannst du auf sie nicht zugreifen. Wenn du dir den Beitrag von HonniCilest genauer ansiehst, steht da auch PrintJob, nicht PrinterJob.
Außerdem ist es nicht empfohlen, so viele Pakete vollständig zu importieren. Das frisst nur unnötig Ressourcen! Dafür gibt es IDEs, die diese Arbeit (imports generieren) für dich erledigen.Geändert von genodeftest (12.04.11 um 21:23 Uhr)
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
okay, danke für eure Antworten!
-
13.04.11 10:19 #14Entschuldige, das muss getGraphics() heißen. Ich schätze mit einem Blick in die API wärst du sicher auch alleine darauf gekommenUnd beim Drucken findet er den Befehl pjog.createGraphics(); nicht.

Schau bitte nochmal oben, da hatte ich anhand eines Kommetares angegeben, dass du Graphics2D auch noch bearbeiten musst!Jeder Fehler, aus dem wir lernen, ist ein Erfolg...
...Aber mach' nicht den Fehler, nicht aus deinen Fehlern zu lernen.
-
14.04.11 18:41 #15SE Tutorials.de Gastzugang
also bei allen projekten die ich bis jetzt entwickelt hab habe ich immer sämtliche pakete VOLLSTÄNDIG importiert die die klassen enthielten die ich brauchte ...
nämlich aus dem grund weil ich keine 100 import zeilen haben will wenns mit 5 oder 10 auch geht ...
außerdem : projekt mit vollständig importiertem javax.swing.* und java.awt.* machen weder die class größer noch brauchen sie bei der ausführung mehr speicher
und ich glaube auch kaum das es sinnvoll ist so viele import-anweisungen zu haben ... nicht umsonst hat man in java die wildcards für imports ermöglicht ... ansonsten sähe das so stumpf wie in C aus ... jedes header-file einzeln importieren ...
wenn du nämlich mal java im debug-modus laufen lässt und dir den verbose-output ankuggst dann siehst du das die JVM nur die klassen läd die gebraucht werden ... und das völlig unabhängig von den imports ... die sind im großen und ganzen nur dazu da dem compiler die verwendeten klassen bekannt zu machen so das er dann z.b. Driver immer mit java.sql.Driver verbindet und du es nicht jedes mal dazuschreiben musst ...
Ähnliche Themen
-
Image aus Speicherbereich erstellen ?
Von Hroudtwolf im Forum C/C++Antworten: 3Letzter Beitrag: 03.04.07, 14:17 -
Image erstellen / CD auslesen
Von Jens Bond im Forum C/C++Antworten: 1Letzter Beitrag: 11.10.05, 00:12 -
Image via PHP erstellen mit hintergrundbild
Von Manhunter im Forum PHPAntworten: 17Letzter Beitrag: 11.09.05, 21:36 -
Aus lokalem Ordner DVD Image erstellen
Von Flame im Forum Microsoft WindowsAntworten: 4Letzter Beitrag: 10.04.05, 09:56 -
Image erstellen
Von Arne Buchwald im Forum PhotoshopAntworten: 41Letzter Beitrag: 22.10.01, 16:19





Zitieren

Login





