-
28.05.08 12:41 #16
- Registriert seit
- Sep 2007
- Beiträge
- 50
Ich bin jetzt soweit gekommen das ich das Bild auf dem JFrame erstellt bekomme aber, der Hintergrund ist Schwarz und die gezeichneten Linien sind weiss. Und ich bekomme es nicht hin das es umgedreht ist.
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
FormPrintPreview t = new FormPrintPreview("Drucken Abfrage Bestellliste FormPrintPreview"); java.awt.image.BufferedImage p = new java.awt.image.BufferedImage(900, 900, java.awt.image.BufferedImage.TYPE_INT_RGB); FormPreviewPrint s = new FormPreviewPrint(); javax.swing.JFrame o = new javax.swing.JFrame(); o.setTitle("Drucken Abfrage Bestellliste FormPreviewPrint"); o.setBounds(100, 100, 900, 900); o.setLayout(null); o.setVisible(true); o.setDefaultCloseOperation(o.DISPOSE_ON_CLOSE); o.add(s); o.setComponentZOrder(s, 0); Graphics2D g = p.createGraphics(); g.setBackground(new java.awt.Color(255,255,255)); System.out.println("g.Background = " + g.getBackground().toString()); g.drawString("Hallo ich bins der Test!", 50, 50); g.drawOval(90, 90, 100, 100); t.addSeite(p); s.addSeite(p); t.getSeitenVector().trimToSize(); System.out.println("capacity = " + t.getSeitenVector().capacity()); t.paint(g); s.paint(g);
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
public class FormPreviewPrint extends java.awt.Canvas { //private java.awt.Canvas zeichenflaeche; //private javax.swing.JPanel panel; //private javax.swing.JButton ButtonDrucken; //private javax.swing.JButton ButtonAbbruch; private java.awt.Canvas canvas; private Vector<java.awt.image.BufferedImage> seiten; private int aktuelleseite; public FormPreviewPrint() { this.setBounds(0, 0, 900, 900); this.setVisible(true); super.setBackground(new java.awt.Color(255,255,255)); this.seiten = new Vector<java.awt.image.BufferedImage>(); this.aktuelleseite = 0; } public java.awt.Canvas getCanvas() { return this; } public Vector<java.awt.image.BufferedImage> getSeitenVector() { return this.seiten; } public void addSeite(java.awt.image.BufferedImage SEITE) { if(this.seiten == null) { this.seiten = new Vector<java.awt.image.BufferedImage>(); this.seiten.add(SEITE); } else { this.seiten.add(SEITE); } } public void paint(Graphics g) { //g = seiten.get(aktuelleseite).getGraphics(); //this.setBackground(new java.awt.Color(255,255,255)); g.drawImage(seiten.get(aktuelleseite), 0, 0, this); } }
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
public class FormPrintPreview extends javax.swing.JFrame { private java.awt.Canvas canvas; private Vector<java.awt.image.BufferedImage> seiten; private int aktuelleseite; public FormPrintPreview(String TITLE) { this.setTitle(TITLE); this.setBounds(0, 0, 900, 900); this.setLayout(null); this.setVisible(true); this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE); // Hintergrund muss weiss werden //this.getZeichenFlaeche().getContentPane().setBackground(new java.awt.Color(255,255,255)); this.getContentPane().setBackground(new java.awt.Color(255, 255, 255)); //this.canvas = new java.awt.Canvas(); //this.canvas.setBounds(0, 0, 900, 900); //this.canvas.setBackground(new java.awt.Color(255, 255, 255)); //this.canvas.setVisible(true); //this.add(this.canvas); //this.setComponentZOrder(this.canvas, 0); this.seiten = new Vector<java.awt.image.BufferedImage>(); this.aktuelleseite = 0; } public java.awt.Canvas getCanvas() { return this.canvas; } public Vector<java.awt.image.BufferedImage> getSeitenVector() { return this.seiten; } public void addSeite(java.awt.image.BufferedImage SEITE) { if(this.seiten == null) { this.seiten = new Vector<java.awt.image.BufferedImage>(); this.seiten.add(SEITE); } else { this.seiten.add(SEITE); } } public void paint(Graphics g) { //g = seiten.get(aktuelleseite).getGraphics(); super.getContentPane().setBackground(new java.awt.Color(255, 255, 255)); g.drawImage(seiten.get(aktuelleseite), 0, 0, this); } }
Ich gebe bald auf Weiss jemand den Grund warum das so geschieht? Oder kann mir eine Lösuung des Problems nennen
CU Nathaniell
-
28.05.08 12:44 #17
Die Anweisung womit du deine Zeichnung oder BufferedImage zeichnetst
"... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)
"Sir?, we're sorrounded!"
"Excellent, we can attack in any direction"
-
28.05.08 12:46 #18
- Registriert seit
- Sep 2007
- Beiträge
- 50
@Matze:
Tut mir leid verstehe gerade nur Bahnhof
Bin wahrscheinlich schon Geistigkaputt für heute.
Kannst du es mir bitte mal genauer erklären!?
CU Nathaniell
-
28.05.08 12:52 #19
- Registriert seit
- Sep 2007
- Beiträge
- 50
Ich will doch nur ein JFrame Zeichnen auf dem ein Canvas liegt. Auf das Canvas möchte ich zeichnen und genau immer die aktuelle Seite davon. Wie schon gelöst über den Vector.
Aber ich raffs nich warum das nicht geht!!
Bitte Hilfe
Cu Nathaniell
-
Na du willst doch nun dein BufferedImage darstellen oder?
Code java:1
g.drawImage(image,0,0,this);
-
28.05.08 12:53 #21
Sorry, hatte sich auf dein Post davor bezogen.
@zeja
Hat er das nicht schon im Code?"... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)
"Sir?, we're sorrounded!"
"Excellent, we can attack in any direction"
-
28.05.08 13:04 #22
- Registriert seit
- Sep 2007
- Beiträge
- 50
@Matze
Matze hast recht.
@Zeja
Ja das hab ich schon im Code wie Matze gesagt hat.
Cu Nathaniell
-
Also ich weiß nicht was du bei dir gemacht hast, aber das kann man nicht so lassen.
Erstmal hat der Vector nichts im Canvas zu suchen, da das Canvas zur Darstellung sein soll. Das heißt, man gibt dem Canvas immer das Image, dass es darstellen soll.
Dann legst du nicht mal ein Canvas-Object in deinem Frame an.
Ich verstehe dann noch nicht warum du die paint()-Methode des Frames überschrieben hast.
Die Klasse die dann das Frame und das Canvas nutzt, ist mir auch unverständlich. Die paint-Methode brauchst du nie aufzurufen.
Ich hab die hier mal schnell ein kleines Beispiel geschrieben, dass genau das macht, was du möchtest.
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
import java.awt.Graphics; import java.awt.image.BufferedImage; public class FormPreviewPrint extends java.awt.Canvas { private BufferedImage printImage = null; public FormPreviewPrint() { this(null); } public FormPreviewPrint(BufferedImage printImage) { super(); this.printImage = printImage; } /** * @return the printImage */ public BufferedImage getPrintImage() { return printImage; } /** * @param printImage the printImage to set */ public void setPrintImage(BufferedImage printImage) { this.printImage = printImage; } public void paint(Graphics g) { if(printImage != null) g.drawImage(printImage, 0, 0, this); } }
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
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import javax.swing.JFrame; public class PreviewFrame extends JFrame { private FormPreviewPrint previewPrint = null; public PreviewFrame() { setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(300, 300); previewPrint = new FormPreviewPrint(); add(previewPrint, BorderLayout.CENTER); previewPrint.setPrintImage(createPrintImage()); } private BufferedImage createPrintImage() { BufferedImage p = new BufferedImage(900, 900, BufferedImage.TYPE_INT_RGB); Graphics2D g = p.createGraphics(); g.setColor(Color.white); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(Color.BLACK); g.drawString("Hallo ich bins der Test!", 50, 50); g.drawOval(90, 90, 100, 100); return p; } public static void main(String[] args) { new PreviewFrame().setVisible(true); } }
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
29.05.08 13:43 #24
- Registriert seit
- Sep 2007
- Beiträge
- 50
Danke Sascha ich probier deine Variante mal aus.
Später mehr.
Cu Nathaniell
-
29.05.08 14:09 #25
- Registriert seit
- Sep 2007
- Beiträge
- 50
@Sascha
Danke nochmals das ist eine gute Idee.
Ich leg jetzt noch ne Klasse an die die Druckvorschau an sich kapselt.
Mit Canvas, dem Frame und der zusatzklasse die den Vector enthält.
Das ist ein guter Ansatz da kann ich dann auch den Vector mit meiner eigenen Klasse als grundlage nehmen lassen um so die Bilder zu kapseln einem DruckDocument das das Interface Printable implentiert.
Vielleicht habt ihr aber eine bessere Idee dann immer her damit. Ich habe außerdem dem mit dem Druck von Graphics Objekten oder BufferedImages nooch ein paar Probleme.
Falls ich sie nicht lösen kann dann melde ich mich nochmal. Danke Danke Danke
Habe eine ähnliche Lösung wie du gefunden Sascha aber bei weitem nicht so elegant.
Cu Nathaniell
Ähnliche Themen
-
Web Worker - Layoutprozess und Zeichnen in Canvas
Von Danielku15 im Forum Javascript & AjaxAntworten: 0Letzter Beitrag: 10.12.10, 11:01 -
HTML5 - Canvas asynchron zeichnen.
Von Danielku15 im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 04.10.10, 12:44 -
Array auf Canvas zeichnen
Von DerMaaarkus im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 04.10.10, 12:36 -
Canvas neu zeichnen
Von HTML5er im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 07.10.09, 18:09 -
Eclipse Plugin, swt Canvas Polynome zeichnen
Von 7mSeni im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 9Letzter Beitrag: 11.07.09, 02:36



1Danke

Zitieren


Login





