Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-01-12 19:01:09

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Rysowanie w javie i zapis do pliku

Witam! Mam taki applet dzięki któremu można rysować, kod java wygląda tak:

Kod:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.applet.*;

public class rysunek extends JApplet implements MouseMotionListener, MouseListener
{
   int x=0; int y=0; int a=0;
   public void init()
   {
      addMouseMotionListener(this); addMouseListener(this);
    }

   public void mouseMoved (MouseEvent e) {}
   public void mouseDragged(MouseEvent e) {
       if (a==1)
       {
           x=e.getX();
           y=e.getY();
           getGraphics().setColor(Color.BLACK); getGraphics().fillOval(x,y,5,5);
       }
    }
    public void mouseClicked (MouseEvent e)
    {
        int button = e.getButton();
        if (button == MouseEvent.BUTTON3) {repaint();}
    }
    public void mouseEntered (MouseEvent e){}
    public void mouseExited (MouseEvent e){}
    public void mousePressed (MouseEvent e)
    {
        int button = e.getButton();
        if (button == MouseEvent.BUTTON3) {a=0; repaint();}
        if (button == MouseEvent.BUTTON1) {a=1;}
    }
    public void mouseReleased(MouseEvent e){}

    public void paint(Graphics g)
    {
        g.setColor(Color.red); g.fillRect(0,0,420,240);
     }
}

( Szczerze powiedziawszy nie znam dobrze javy także był bym wdzięczny gdyby ktoś mi mógł powiedzieć
co do czego służy ( powierzchownie wiem ).
I jeszcze jedno pytanie - jak uzupełnić ten kod aby namalowany rysunek można było zapisać do pliku w formacie jpg???


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#2  2009-01-12 21:35:05

  0dd - Członek DUG

0dd
Członek DUG
Skąd: Kraków
Zarejestrowany: 2006-03-25

Re: Rysowanie w javie i zapis do pliku

zapisanie do pliku jako JPEG znajdziesz tu http://www.jguru.com/faq/view.jsp?EID=703938 powinno dzialac, nie sprawdzalem
Ktorej czesci kodu nie rozumiesz?


apt-get install anarchism

Offline

 

#3  2009-01-13 12:59:10

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: Rysowanie w javie i zapis do pliku

No tak tylko nie bardzo wiem jak te kody połaczyć?? Bo jak kompiluje z http://www.jguru.com/faq/view.jsp?EID=703938 to sypie mi błędy ale to ze względu na tą część:

...

Frame f = ...; // create your GUI

Także był bym wdzięczny za pomoc.


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#4  2009-01-13 16:41:13

  0dd - Członek DUG

0dd
Członek DUG
Skąd: Kraków
Zarejestrowany: 2006-03-25

Re: Rysowanie w javie i zapis do pliku

Kod:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import javax.swing.JApplet;

import sun.awt.image.codec.JPEGImageEncoderImpl;

public class rysunek extends JApplet implements MouseMotionListener,
        MouseListener {
    int x = 0;
    int y = 0;
    int a = 0;
    private Graphics bufferGraphics;
    private BufferedImage bufferImage;

    public void init() {
        addMouseMotionListener(this);
        addMouseListener(this);

        bufferImage = new BufferedImage(getWidth(), getHeight(),
                BufferedImage.TYPE_INT_RGB);
        bufferGraphics = bufferImage.getGraphics();
    }

    public void mouseMoved(MouseEvent e) {
    }

    public void mouseDragged(MouseEvent e) {

        if (a == 1) {
            x = e.getX();
            y = e.getY();
            bufferGraphics.setColor(Color.RED);
            bufferGraphics.fillOval(x, y, 5, 5);
            repaint();
        }
    }

    public void mouseClicked(MouseEvent e) {
        int button = e.getButton();
        if (button == MouseEvent.BUTTON3) {
            repaint();
        }
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
        int button = e.getButton();
        if (button == MouseEvent.BUTTON3) {
            a = 0;
            repaint();
        }
        if (button == MouseEvent.BUTTON1) {
            a = 1;
        }
    }

    public void mouseReleased(MouseEvent e) {
        try {
            OutputStream out = new FileOutputStream(new File("/tmp/a.jpg"));
            JPEGImageEncoderImpl j = new JPEGImageEncoderImpl(out);
            j.encode(bufferImage);
            out.close();
        } catch (Exception e1) {
            e1.printStackTrace();
        }

    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(bufferImage, 0, 0, null);
    }
    
}

po puszczeniu przycisku myszy tworzy plik /tmp/a.jpg


apt-get install anarchism

Offline

 

#5  2009-02-03 00:29:02

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: Rysowanie w javie i zapis do pliku

ooo wielka dziękówka! O to chodziło! Możesz mi jeszcze napisać jak zdeklarować background i wielkość okna??


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#6  2009-02-03 09:41:43

  Kudzu - 1NF:rM@7iON1SP0vvErr

Kudzu
1NF:rM@7iON1SP0vvErr
Skąd: Universe
Zarejestrowany: 2007-01-06

Re: Rysowanie w javie i zapis do pliku

Klasyczny background czy zdjęcie jako background ?

zdjęcie:

Kod:

    @Override
    protected void paintComponent( Graphics g )
    {
        super.paintComponent( g );
        
        Dimension size = this.getSize() ;
        g.drawImage( image, 10, 10, size.width-20, size.height-20, null ) ;
    }

klasyczny:

Kod:

Konstruktor klasy()
{
    //..... kod.....
    setBackground(Color.RED) //przykład
    ........ kod.....
}

Wielkośc okna ?

Kod:

Konstruktor...()
{
     //kod...
     setSize(800,600) //przykład
     //kod...
}

...software is like sex
it's better when it's free..

Offline

 

#7  2009-02-03 23:11:46

  debbie - Użytkownik

debbie
Użytkownik
Zarejestrowany: 2006-09-19

Re: Rysowanie w javie i zapis do pliku

setSize(800,600) działa ale niebardzo wiem gdzie wstawić - setBackground(Color.RED) bo cały czas mam czarny kolor tła.
Jeszcze jedna prośba - byłby ktoś w stanie opisać komentarzami kolejno co za co odpowiada??( np za co odpowiadają tam if'y?? tzn jakie warunki spełaniają bo nieznam składni javy także niebardzo wiem może podam przykład:

ta częśc:

public void mouseDragged(MouseEvent e) {

        if (a == 1) {
            x = e.getX();
            y = e.getY();
            bufferGraphics.setColor(Color.GREEN);
            bufferGraphics.fillOval(x, y, 10, 10);
            repaint();
        }
    }

wiem że jest odpowiedzialna za kolor którym rysuje i grubość typu oval ( tak to rozumie )
ale już niebardzo kumam dlaczego - jeżeli  a==1???
Jest ktoś w stanie ten kod objąć komentarzami??


debbie
Wrócę jak zjem zupę i drugie danie - tyle
a oto ta zupa:

Offline

 

#8  2009-02-04 08:35:37

  0dd - Członek DUG

0dd
Członek DUG
Skąd: Kraków
Zarejestrowany: 2006-03-25

Re: Rysowanie w javie i zapis do pliku

Kod:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import javax.swing.JApplet;

import sun.awt.image.codec.JPEGImageEncoderImpl;

public class rysunek extends JApplet implements MouseMotionListener,
        MouseListener {
    int x = 0;
    int y = 0;
    int a = 0;
    private Graphics bufferGraphics;
    private BufferedImage bufferImage;
    
    @Override
    public void init() {
        resize(400, 400);            //ustawia rozmiar okna 
        
        addMouseMotionListener(this);    //rejestruje listenera reagujacego na ruch mysza oraz na przyciski
        addMouseListener(this);
        
        bufferImage = new BufferedImage(getWidth(), getHeight(),
                BufferedImage.TYPE_INT_RGB);

        bufferGraphics = bufferImage.getGraphics();
        bufferGraphics.setColor(Color.BLUE);
        bufferGraphics.fillRect(0, 0, getWidth(), getHeight());
    }

    public void mouseMoved(MouseEvent e) {
    }

    public void mouseDragged(MouseEvent e) {

        if (a == 1) {                            //sprawdza czy lewy przyciski myszy jest wcisniety
            x = e.getX();
            y = e.getY();
            bufferGraphics.setColor(Color.RED);
            bufferGraphics.fillOval(x, y, 5, 5);
            repaint();
        }
    }

    public void mouseClicked(MouseEvent e) {
        int button = e.getButton();
        if (button == MouseEvent.BUTTON3) {
            repaint();
        }
    }

    public void mouseEntered(MouseEvent e) {
    }

    public void mouseExited(MouseEvent e) {
    }

    public void mousePressed(MouseEvent e) {
        int button = e.getButton();
        if (button == MouseEvent.BUTTON3) {
            a = 0;                                //prawy przycisk myszy
            repaint();
        }
        if (button == MouseEvent.BUTTON1) {
            a = 1;                                //lewy przycisk myszy
        }
    }

    public void mouseReleased(MouseEvent e) {
        try {
            OutputStream out = new FileOutputStream(new File("/tmp/a.jpg"));
            JPEGImageEncoderImpl j = new JPEGImageEncoderImpl(out);
            j.encode(bufferImage);
            out.close();
        } catch (Exception e1) {
            e1.printStackTrace();
        }

    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(bufferImage, 0, 0, null);
    }
    
}

wypelnianie tla zrobilem prze rysowanie prostokata, bardzo brzydko ale nie mam czasu szukac bo niedlugo mam egzamin.


apt-get install anarchism

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)