Dibujar en java!!!!

Iniciado por danielo-, 12 Noviembre 2009, 05:46 AM

0 Miembros y 1 Visitante están viendo este tema.

danielo-

Hola de nuevo!!!! :o
Ya como es costumbre vuelvo a preguntarles para poder realizar un trabajo escolar, la chamba no se acaba...la diversión si... Pero lo bueno es que me divierto programando, jajaj...bueno, pues mi tarea es la siguiente, realizar un frame, que debe dibujar, algo, es algo asi como los protectores de pantalla de windows, esos que se dibujan lineas y en determinado tiempo cambian su trayectoria, pues algo asi debo crear, claro utilizando metodos java...en el frame se deben dibujar lineas...y controlado con un temporizador cambiar su trayectoria, lo del temporizador tengo la idea para poder hacerlo, pero lo del dibujo no, me imagino q se trata de especificar coordenadas y que se vallan dibujado una linea, pero pues la verdad no se como...ayudenme porfa!!!!
....gracias de antemano  ;-)

Leyer

ps no manejo mucho el dubujar pero espero que esto te sirva http://sunsite.dcc.uchile.cl/java/docs/JavaTut/Cap5/grafico.html.

Saludos y suerte.

danielo-

  :D gracias...aunque keria algo un poco mas concreto,  :P , creo que debi mencionar que ya se manejar los frame, crear paneles y utilizar el metodo paint de la clase Graphics, eso creo que todos lo saben, pero pues la duda era que si podrian indicarme la manera de diubujar, al menos un pequeño ejemplo para poder crearlo, un pequeño metodo que dibuje lineas basado en coordenadas o algo asi...solo para guiarme  ;D...

1mpuls0

Interesante...  :rolleyes:

La verdad nunca me habia puesto a pensar en hace mi propio protector de pantalla  :xD
Pero es buena idea

Hace tiempo mire esta pagina

http://www.eigelb.at/HP/Links/SpecialEffects/Grappa/BlueRandom/index.html

Está programado en Java

La verdad no se si exista el código libre, pero igual te podria ayudar a darte una idea, habia decompilado las clases  y si mal no recuerdo usaba Graphics

Saludos
abc

Leyer

ufff  :D imaginarme el code me da dolor de cabeza :)

Saludos,.

Leyer

este si te ayudaria bastante..

Código (java) [Seleccionar]
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.event.*;

public class FreeHand extends JPanel
{
    /**
*
*/
private static final long serialVersionUID = 1L;
BufferedImage image;
    Color color;
    Stroke stroke;

    public FreeHand()
    {
        color = Color.blue;
        stroke = new BasicStroke(1f, BasicStroke.CAP_BUTT,
                                     BasicStroke.JOIN_MITER);
    }

    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        if(image == null)
            initImage();
        g.drawImage(image, 0, 0, this);
    }

    public void draw(Point start, Point end)
    {
        Graphics2D g2 = image.createGraphics();
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        g2.setPaint(color);
        g2.setStroke(stroke);
        g2.draw(new Line2D.Double(start, end));
        g2.dispose();
        repaint();
    }

    private void clearImage()
    {
        Graphics g = image.getGraphics();
        g.setColor(getBackground());
        g.fillRect(0, 0, image.getWidth(), image.getHeight());
        g.dispose();
        repaint();
    }

    private void initImage()
    {
        int w = getWidth();
        int h = getHeight();
        image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = image.createGraphics();
        g2.setPaint(getBackground());
        g2.fillRect(0,0,w,h);
        g2.dispose();
    }

    private JPanel getColorPanel()
    {
        Color[] colors = {
            Color.red, Color.green.darker(), Color.blue, Color.orange
        };
        ActionListener l = new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                JButton button = (JButton)e.getSource();
                color = button.getBackground();
            }
        };
        JPanel panel = new JPanel(new GridLayout(1,0));
        for(int j = 0; j < colors.length; j++)
        {
            JButton button = new JButton("  ");
            button.setFocusPainted(false);
            button.setBackground(colors[j]);
            button.addActionListener(l);
            panel.add(button);
        }
        return panel;
    }

    private JPanel getControlPanel()
    {
        JButton clear = new JButton("clear");
        clear.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {
                clearImage();
            }
        });
        final JSlider slider = new JSlider(JSlider.HORIZONTAL, 1, 6, 1);
        slider.addChangeListener(new ChangeListener()
        {
            public void stateChanged(ChangeEvent e)
            {
                float value = ((Integer)slider.getValue()).floatValue();
                stroke = new BasicStroke(value, BasicStroke.CAP_BUTT,
                                                BasicStroke.JOIN_MITER);
            }
        });
        JPanel panel = new JPanel();
        panel.add(new JLabel("stroke"));
        panel.add(slider);
        panel.add(clear);
        return panel;
    }

    public static void main(String[] args)
    {
        FreeHand freeHand = new FreeHand();
        DrawingListener listener = new DrawingListener(freeHand);
        freeHand.addMouseListener(listener);
        freeHand.addMouseMotionListener(listener);
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(freeHand.getColorPanel(), "North");
        f.getContentPane().add(freeHand);
        f.getContentPane().add(freeHand.getControlPanel(), "South");
        f.setSize(400,400);
        f.setLocation(200,200);
        f.setVisible(true);
    }
}

class DrawingListener extends MouseInputAdapter
{
    FreeHand freeHand;
    Point start;

    public DrawingListener(FreeHand fh)
    {
        this.freeHand = fh;
    }

    public void mousePressed(MouseEvent e)
    {
        start = e.getPoint();
    }

    public void mouseDragged(MouseEvent e)
    {
        Point p = e.getPoint();
        freeHand.draw(start, p);
        start = p;
    }
}

danielo-

  fracias por las aportaciones...ahora estoy checando el codigo y las painas... si termino mi tarea les paso el codigo para que vean como quedo...gracias!!

danielo-

#7
import java.net.URL;

import java.awt.Toolkit;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Image;

import javax.swing.JFrame;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.util.Random;



import java.awt.Rectangle;

import java.awt.GraphicsEnvironment;

import java.awt.GraphicsDevice;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import java.awt.event.MouseEvent;

import javax.swing.*;



import java.awt.Robot;

import java.awt.Dimension;

import java.awt.Toolkit;

import java.awt.Image;



class Borrado extends JFrame implements MouseListener, MouseMotionListener{

   

   Image img;

   Random r;

   

   GraphicsDevice grafica;   

   int Alto,Ancho;   

   

   int xi=200,yi=200,xf,yf;

   

   Toolkit toolkit;

   Dimension dq;

   Robot rob;                     

//   Image img;

   

   public Borrado(){      

      try{

         toolkit = Toolkit.getDefaultToolkit();

         dq = toolkit.getScreenSize();

         rob = new Robot();                     

         img = rob.createScreenCapture(new Rectangle(dq));

      }

      catch(Exception e){}

      

      Toolkit tk = Toolkit.getDefaultToolkit();

      Dimension d = tk.getScreenSize();

      Alto = d.height;

      Ancho = d.width;



      setUndecorated(false);

      

      addMouseMotionListener(this);

      grafica= GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();

      grafica.setFullScreenWindow(this);

      

      setTitle("Borrado");



      setVisible(true);

      addWindowListener(wa);

      r=new Random();

      

      refrescar();

   }

   

   public void mouseClicked( MouseEvent evento ){}

   public void mousePressed( MouseEvent evento ){}

   public void mouseReleased( MouseEvent evento ){}

   public void mouseEntered( MouseEvent evento ){}

   public void mouseExited( MouseEvent evento ){}

   public void mouseDragged( MouseEvent evento ){}

   

   public void mouseMoved( MouseEvent evento ){

      System.exit(1);

   }



   

   WindowAdapter wa=new WindowAdapter(){

      public void windowClosing(WindowEvent we){

         System.exit(0);

      }

   };

   

   public void paint(Graphics g){

      setBackground(Color.black);

      g.drawImage(img, 0, 0, this);

   }

   

   public void refrescar(){

      try{

         Thread.sleep(1000); // Pausa de un segundo

         Graphics g=getGraphics();

         int ro=0;

         //while(ro<800){

            Graphics2D g2 = (Graphics2D) g;

            g2.setStroke(new BasicStroke(15.0f));      

            g.setColor( Color.BLACK);         

         

            Thread.sleep(r.nextInt(300));

            //xf=r.nextInt(1000);

            //xf=r.nextInt(1000);

            xf=300;

            yf=100;

            

            System.out.println("xi= "+xi);

            System.out.println("yi= "+yi);

            

            //g.drawArc( xi,yi,xf,yf,r.nextInt(180),r.nextInt(180));   

            g.drawArc( 100,100,300,300,180,180);

            g.drawArc( 380,90,300,400,160,210);

            //g.drawArc( 100,100,300,300,100,100);

            Thread.sleep(300);

            g2.setStroke(new BasicStroke(15.0f));      

            g.setColor( Color.RED);         

            //g.drawArc( xi,yi,xf,yf,90,300);

            //g.drawArc( 100,100,300,300,100,100);

            //g.drawLine( 0,0,300,126);

            g.drawLine( 0,0,250,100);

            

            //xi=xf;

            //yi=yf;

            ro++;

            System.out.println("xf= " +xf);

            System.out.println("yf= "+yf);

         //}

      }

      catch (Exception e){

            System.out.println("MMMM");

      }

      //repaint();

      refrescar();

   }

   public static void main(String arg[]){

      Borrado b=new Borrado();

   }

}