elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  problema con graphics java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: problema con graphics java  (Leído 9,547 veces)
bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
problema con graphics java
« en: 22 Diciembre 2015, 05:13 am »

quiero mostrar el desplazamiento de un punto hacia un punto final

entonces desarrolle este codigo
Código
  1. public class Point {
  2.  
  3.    public static void putPixel(Graphics g2, int x, int y) {
  4.        Graphics2D g = (Graphics2D)g2;
  5.        g.setColor(Color.black);
  6.        g.drawLine(x, y, x, y);
  7.    }
  8. }



« Última modificación: 23 Diciembre 2015, 18:32 pm por DeviiAC » En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: problema con graphics java
« Respuesta #1 en: 22 Diciembre 2015, 06:08 am »

Hola puedes dar mas informacion de lo que quieres ya que tengo una idea pero a lo mejor no es lo quieres aconsejo ser mas preciso

segundo no revulevas componentes de awt con los de swing aun que en algunos casos funcione no es lo correcto hay otros detalles pero espero seas mas preciso con la explicacion.


Edito:
Bueno me di a la tarea de mostrar un ejemplo muy burdo espero esto se asemeje a lo que buscas si no lo es hazlo saber

en teoria es un circulo que se mueve de un punto a otro ojo la implentacion es muy simple y tendra sus detalles

Espero alguno moderador agrege las etiquetas geshi por que yo no puedo

public class AnimationFrame extends JPanel implements Runnable {

    private int xinicial = 0, yinicial = 0;
    private int xfinal = 0, yfinal = 0;
    private boolean terminar = false;
    private final byte tamanoPelota=30;

    public AnimationFrame(int xinicial, int yinicial, int xfinal, int yfinal) {
        this.xinicial = xinicial;
        this.yinicial = yinicial;
        this.xfinal = xfinal;
        this.yfinal = yfinal;
    }

    public void paint(Graphics g) {
        super.paint(g);
        pintarPunto(g, xinicial, yinicial);
    }

    public void pintarPunto(Graphics g2, int x, int y) {
        g2.setColor(Color.blue);
        g2.fillOval(x, y, tamanoPelota, tamanoPelota);
    }

    @Override
    public void run() {

        while (!terminar) {
            xinicial++;
            yinicial++;
            if (xinicial == xfinal && yinicial == yfinal) {
                break;
            }
            try {
                Thread.sleep(10);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
            repaint();
        }
    }

    public static void main(String[] args) throws InterruptedException {

        JFrame ventana = new JFrame("animacion corriendo");
        ventana.setBounds(0, 0, 500, 500);
       
        //le pasamos las coordenas de donde iniciar y las coordeandas donde terminara
        AnimationFrame animacion = new AnimationFrame(0, 0, 200, 200);
        ventana.add(animacion);
        ventana.setVisible(true);
        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        Thread t1 = new Thread(animacion);
        t1.start();
        t1.join();
        System.out.println("Hilo terminado");

    }

}



« Última modificación: 22 Diciembre 2015, 06:44 am por crack81 » En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #2 en: 22 Diciembre 2015, 14:12 pm »

no quiero utilizar hilos, no quiero saber nada de hilos ejjeje gracias por entenderme

lo que yo pretendo hacer es que el pixel simule que avance, mi idea es la siguiente:
dibujo un punto
pasa 3 milesegundos y borro
dibujo el punto siguiente
 pasa 3 milesegundos y borro
y asi sucesivamente hasta que llegue al punto final
entonces yo quiero mostrar todo el avance y no solamente el punto final dibujado

nota: mi codigo solo muestra el punto final dibujado
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: problema con graphics java
« Respuesta #3 en: 22 Diciembre 2015, 17:55 pm »

No veo que se dibuje algo, de todas formas no debes meter algún repaint() dentro del método paint() vamos que así no terminará de pintar.

Te dejo este esqueleto para hacer juegos en java( utiliza hilos), está muy bien hecho: http://javapragmatico.blogspot.mx/2009/04/esqueleto-basico.html
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #4 en: 23 Diciembre 2015, 00:20 am »

se dibuja solo el punto final es muy chiquitito
lo modifique comentando el codigo pruebalo porfavor

Código
  1.    class AnimationFrame extends JPanel {
  2.  
  3.  
  4.        public AnimationFrame() {
  5.            setPreferredSize(new Dimension(500, 500));
  6.        }
  7.  
  8.        public void runAnimation() {
  9.            repaint();
  10.        }
« Última modificación: 23 Diciembre 2015, 18:33 pm por DeviiAC » En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: problema con graphics java
« Respuesta #5 en: 23 Diciembre 2015, 01:28 am »

¿Pero por qué no quieres utilizar hilos?, bueno de todos modos he modificado el código de @crack18 para que funcione sin hilos:
Código
  1. public class AyudaForo extends JPanel{
  2.  
  3.    private static int xinicial = 0, yinicial = 0;
  4.    private static int xfinal = 0, yfinal = 0;
  5.    private static boolean terminar = false;
  6.    private static final byte tamanoPelota=30;
  7.    public static AyudaForo animacion = new AyudaForo(0,0,200,200);
  8.  
  9.    public AyudaForo(int xinicial, int yinicial, int xfinal, int yfinal) {
  10.        this.xinicial = xinicial;
  11.        this.yinicial = yinicial;
  12.        this.xfinal = xfinal;
  13.        this.yfinal = yfinal;
  14.    }
  15.  
  16.    public void paint(Graphics g) {
  17.        super.paint(g);
  18.        pintarPunto(g, xinicial, yinicial);
  19.    }
  20.  
  21.    public void pintarPunto(Graphics g2, int x, int y) {
  22.        g2.setColor(Color.blue);
  23.        g2.fillOval(x, y, tamanoPelota, tamanoPelota);
  24.    }
  25.  
  26.    public static void run() {
  27.  
  28.        while (!terminar) {
  29.            xinicial++;
  30.            yinicial++;
  31.            if (xinicial == xfinal && yinicial == yfinal) {
  32.                break;
  33.            }
  34.            try {
  35.                Thread.sleep(10);
  36.            } catch (InterruptedException ex) {
  37.                ex.printStackTrace();
  38.            }
  39.            animacion.repaint();
  40.        }
  41.    }
  42.  
  43.    public static void main(String[] args) throws InterruptedException {
  44.  
  45.        JFrame ventana = new JFrame("animacion corriendo");
  46.        ventana.setBounds(0, 0, 500, 500);
  47.        ventana.add(animacion);
  48.        ventana.setVisible(true);
  49.        ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  50.        run();
  51.        System.out.println("Hilo terminado");
  52.  
  53.    }
  54.  
  55. }
  56.  

en el método run hay dos variables xinicial,yinicial y son las coordenadas del punto, o sea que dentro de ese método debes implementar tu algoritmo para dibujar.

Código
  1. public static void run() {
  2.           //Aquí utiliza tu algoritmo para ir modificando las variables que te había mencionado
  3.  
  4.            try {
  5.                Thread.sleep(10);
  6.            } catch (InterruptedException ex) {
  7.                ex.printStackTrace();
  8.            }
  9.            animacion.repaint();
  10.  
  11.    }

debes llamar a repaint cada vez que hayas desplazado el punto, en el ejemplo sólo se llama una vez.
« Última modificación: 23 Diciembre 2015, 01:31 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #6 en: 23 Diciembre 2015, 02:01 am »

pero mi algoritmo lleva while asi que no se incrementa de 1 en 1


creo que mi problema es el while
En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: problema con graphics java
« Respuesta #7 en: 23 Diciembre 2015, 02:17 am »

y eso que tiene ver que uses while el codigo que publique se puede tambien aumentar en otros valores no solo en uno explicate un poco mas detalladamente por favor.
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: problema con graphics java
« Respuesta #8 en: 23 Diciembre 2015, 03:28 am »

Es muy simple, sólo tienes que llamar al método repaint() cada vez que modifiques las coordenadas del punto para que se dibuje en donde apunten las coordenadas. Cada vez que se repita el proceso llamas a Sleep y así.
« Última modificación: 23 Diciembre 2015, 03:30 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
bengy


Desconectado Desconectado

Mensajes: 501


mis virtudes y defectos son inseparables


Ver Perfil WWW
Re: problema con graphics java
« Respuesta #9 en: 23 Diciembre 2015, 04:04 am »

quiero por cada iteracion pintar y borrar y luego pintar etc  
« Última modificación: 23 Diciembre 2015, 18:34 pm por DeviiAC » En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Dibujar un engranaje en java con Graphics
Java
meyinkin 1 5,667 Último mensaje 2 Diciembre 2009, 16:02 pm
por Leyer
Problema Wifiway 2.0 con grafica ATI radeon premium graphics directx 11
Wireless en Linux
Norlak 4 5,876 Último mensaje 18 Abril 2013, 21:06 pm
por rcoto
diferencias entre Procesadores intel con HD Graphics y sin HD Graphics
Hardware
Vjuan_ 6 4,383 Último mensaje 21 Diciembre 2012, 00:12 am
por Aprendiz-Oscuro
problema con el Graphics
Java
bash 3 1,987 Último mensaje 11 Febrero 2015, 14:28 pm
por Usuario Invitado
mover graphics en java sin hilos « 1 2 »
Java
bengy 11 5,978 Último mensaje 29 Diciembre 2015, 07:49 am
por crack81
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines