Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

Code Army Bolivia

5/1/10

Animación con Timer en java y netbeans

JAN29


Se puede realizar animacion en java utilizando el objeto Timer el cual realiza operaciones cada cierto tiempo indicado por un temporizador. En este caso la operacion a realizar sera la de presentar en pantalla una secuencia de imagenes JEPG las cuales simular la animación.

La animación consiste en una japo comiendo, ayudandose de un jSlider se podra tambien acelerar o retardar la secuencia de imagenes




El proyecto consta de un JFrame con la siguiente distribucion de objetos
De una clase, la encargada de la animación animationclass.java, esta clase consiste en extender la propiedad jLabel y de añadirle un Timer, el cual es el encargado de la animacion.

El codigo de la clase animationclass.java es:

import java.awt.Dimension;
import java.util.Timer;
import javax.swing.*;
import java.awt.*;
import java.util.TimerTask;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class animationclass  extends javax.swing.JLabel {   
    private Timer tiempo ;
    private TimerTask task;
    private int speed = 60;
    private int frame=0;
    boolean run = false;
    
    //se crea el objeto y se redimensiona al tamaño del contenedor
    public animationclass(Dimension d){        
        this.setSize(d);
    }  
    //coloca una imagen en el objeto jlabel
    public void setimage(int n){        
        this.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/japo_" + n + ".jpg"))); 
    }
    //coloca la velocidad en la variable 
    public void setvelocidad(int v){
        this.speed= v;        
    }
  //para la animacion  
  public void startAnimation() {    
           run=true;
           tiempo = new Timer();
           task = new TimerTask() {               
               public void run() {
                   frame++;                   
                   if (frame<=10){
                        setimage(frame);
                   }
                   else{frame=0;}
               }
           };
           //se inicia la animacion
           System.out.println("Se inicia la animacion");                                             
           tiempo.schedule(task,0,speed); 
    }
    //detiene la animacion
     public void stopAnimation() {        
        tiempo.cancel();
        task.cancel();
        run=false;
        System.out.println("La animacion fue detenida");                                             
    }
}

El funcionamiento de la clase animationclass.java es la de crear un jLabel, otorgarle mediante el constructor el tamaño del contenedor (jPanel) donde se lo colocara, el metodo setimage coloca mediante la propiedad seticon una imagen (de las 10 que se encuentran el package IMG) en el jlabel, el metodo encargado de la animacion es startAnimation(), el cual crea el timer correspondiente el cual ira incrementado la variable frame y hara un llamado al metodo setimage(), para actualizar la imagen del jLabel.

La aplicación terminada

El siguiente video muestra el resultado del proyecto, asi como tambien el diseño realizado con netbeans

Para bajar el proyecto y darle un vistazo al código y a la japo comiendo (Actualizado)
Click para descargar

5 comentarios:

Anónimo dijo...

Excelente aporte! Estuve mucho tiempo buscando algo como esto para incluir una pequeña animación sin necesidad de componentes extras (flash, flex, etc.).
Gracias a este ejemplo pude hacerlo en minutos, en mi caso simplemente adaptando el código para que se ejecute una sola vez la secuencia.

Saludos,
kbza

Anónimo dijo...

Hola, gracias, estuve todo el dia buscando algo para rotar de imagenes, y al fin lo encontre gracias a ti.

Mouse dijo...

de nada

Anónimo dijo...

Hola disculpa q te moleste por si alcazo no tienes uno igual pero para rotar una imagen mediante matrices en netbeans 7.3

Anónimo dijo...

Hola! Primeramente felicitarte por las explicaciones y por tu buen blog.
Una consulta, como puedo hacer que se mueva de manera mucho mas lenta?
Mas o menos 5-10 segundos por imagen

Post recomendado