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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam! Mam taki applet dzięki któremu można rysować, kod java wygląda tak:
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???
Offline
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?
Offline
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.
Offline
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
Offline
ooo wielka dziękówka! O to chodziło! Możesz mi jeszcze napisać jak zdeklarować background i wielkość okna??
Offline
Klasyczny background czy zdjęcie jako background ?
zdjęcie:
@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:
Konstruktor klasy() { //..... kod..... setBackground(Color.RED) //przykład ........ kod..... }
Wielkośc okna ?
Konstruktor...() { //kod... setSize(800,600) //przykład //kod... }
Offline
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??
Offline
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.
Offline
Strony: 1