Si bien se puede hacer uso de archivos de imagen (jpg, png, bmp, etc) en las aplicaciones java, también este te permite crear imágenes dinamicamente mediante su API 2D Graphics2D que se extiende de la clase abstracta Graphics el cual proporciona los métodos necesarios para crear imágenes complejas a partir de objetos básicos.
En los siguientes enlaces puedes ver la documentación oficial (en ingles) de Oracle para las clases:
A continuación dos métodos que haciendo uso de primitivas como son círculos y también polígonos, crea una imagen en memoria el cual puede ser asignado a cualquier control que soporte este tipo de propiedad.
private Image creaImagen() { //imagen en memoria BufferedImage img = new BufferedImage(48, 48, BufferedImage.TYPE_INT_ARGB); // Graphics2D g2d = (Graphics2D) img.getGraphics(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); //circulo g2d.setColor(new Color(101,193,238)); g2d.fillOval(2, 2, 44, 44); //circulo borde g2d.setStroke(new BasicStroke(2.0f)); g2d.setColor(new Color(12,89,183)); g2d.drawOval(2, 2, 44, 44); //Poligono g2d.setColor(new Color(50,149,218)); g2d.fillPolygon(getFlechaP(11,15)); g2d.setColor(new Color(255,255,255)); g2d.fillPolygon(getFlecha(9,13)); return img; }
Método con coordenadas que representan una flecha
/** * coordenadas de una flecha */ private Polygon getFlecha(int px, int py){ Polygon flecha = new Polygon(); flecha.addPoint( px, py + 6 ); flecha.addPoint( px + 16, py + 6 ); flecha.addPoint( px + 16, py ); flecha.addPoint( px + 30, py + 11 ); flecha.addPoint( px + 16, py + 22 ); flecha.addPoint( px + 16, py + 16 ); flecha.addPoint( px, py + 16 ); return flecha; }
Y asignando esta imagen a un JLabel, tenemos:
ImageIcon icon = new ImageIcon(creaImagen()); jLabel1.setIcon(icon); jLabel1.setText("Hola Mundo Cruel!!!");
enjoy!!!
En este post construiremos un sencillo sistema Cliente/Servidor en lenguaje Java, el sistema consistirá básicamente en u[...]
El patrón de desbloqueo es una medida de seguridad que tienen algunos teléfonos inteligentes para evitar el acceso al di[...]
El Algoritmo de Aldous-Broder llamado así por dos matemáticos, David Aldous and A. Broder (quienes trabajaban en la inve[...]
Existen muchas camaras de seguridad por internet algunas protegidas por contraseña pero la mayoria no, utilizando el hac[...]
La siguiente clase reproduce sonidos WAV en controles Swing de Java Netbeans, los controles son pasados en el constructo[...]
En la estructura del proyecto, nuestro modelo mvc esta compuesto por tres paquetes, la vista, el modelo y controlador. L[...]