Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

Archivo del blog

lunes, 10 de marzo de 2014

Gráficos en 2D. Imagenes aleatorias.

Este ejemplo consiste en que al pulsar un jButton se crea una imagen aleatoria cualquiera. Normalmente las imagenes que aparecen no tienen sentido, pero de hecho si Java tuviera una aleatoriedad absoluta, tarde o temprano acabarias apareciendo en una de estas imagenes. Y esque en la aleatoriedad esta el TODO. Por poner un ejemplo, para calcular la probabilidad de que aparezca "La Mona Lisa":

P(Mona Lisa) = 1 / {(Numero de Colores RBG)^(Tamaño jPanel)}
P(Mona Lisa) = 1 / { (255 x 255 x 255)^(375 x 250) }
P(Mona Lisa) = 3.75 x 10^(-676840)


Para empezar se crea un nuevo proyecto y en modo de diseño se agrega un jButton y un jPanel.


Codigo 1 (Principal.java):

package imagenesAleatorias;

public class Principal extends javax.swing.JFrame {
    public Principal() {
        initComponents();
        this.setLocationRelativeTo(null); //Centrar pantalla      
    }
                            
    private void initComponents() { ... }//Codigo generado automáticamente                       

    private void jButtonIniciarActionPerformed(java.awt.event.ActionEvent evt){

         Dibujo.Dibujar(jPanel1.getGraphics(),
         jPanel1.getWidth(),
         jPanel1.getHeight());
    }                                            

    public static void main(String args[]) {     
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Principal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                   
    private javax.swing.JButton jButtonIniciar;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                 
}



Codigo 2 (Dibujo.java): 

package imagenesAleatorias;

import java.awt.Color;
import java.awt.Graphics;

public class Dibujo {
    public static void Dibujar(Graphics g, int width, int height) {
        for (int i = 0; i < width; i++) {
            for (int j = 0; j < height; j++) {
                g.setColor(new Color(
                        (float) Math.random(),
                        (float) Math.random(),
                        (float) Math.random()));
                g.fillRect(i, j, 1, 1);
//dibuja pixel

            }
        }
    }
}



Resultado:



Con la tecnología de Blogger.