tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
24
ZUGRIFFE
11070
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    nathaniells freak nathaniells freak ist offline Mitglied Silber
    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
     

  2. #17
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    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"

  3. #18
    nathaniells freak nathaniells freak ist offline Mitglied Silber
    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
     

  4. #19
    nathaniells freak nathaniells freak ist offline Mitglied Silber
    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
     

  5. #20
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Na du willst doch nun dein BufferedImage darstellen oder?

    Code java:
    1
    
    g.drawImage(image,0,0,this);
     

  6. #21
    Avatar von Matze
    Matze Matze ist offline Weltenwanderer
    Registriert seit
    Jul 2007
    Ort
    Die Welt
    Beiträge
    1.504
    Blog-Einträge
    7
    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"

  7. #22
    nathaniells freak nathaniells freak ist offline Mitglied Silber
    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
     

  8. #23
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    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

    Sascha
    nathaniells freak bedankt sich. 
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  9. #24
    nathaniells freak nathaniells freak ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    50
    Danke Sascha ich probier deine Variante mal aus.

    Später mehr.

    Cu Nathaniell
     

  10. #25
    nathaniells freak nathaniells freak ist offline Mitglied Silber
    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

  1. Web Worker - Layoutprozess und Zeichnen in Canvas
    Von Danielku15 im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 10.12.10, 11:01
  2. HTML5 - Canvas asynchron zeichnen.
    Von Danielku15 im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 04.10.10, 12:44
  3. Array auf Canvas zeichnen
    Von DerMaaarkus im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 04.10.10, 12:36
  4. Canvas neu zeichnen
    Von HTML5er im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 07.10.09, 18:09
  5. Eclipse Plugin, swt Canvas Polynome zeichnen
    Von 7mSeni im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 9
    Letzter Beitrag: 11.07.09, 02:36