JSwing | Crear ventanas translúcidas y con forma en Java

La translucidez por píxel permite al programador controlar la translucidez de un píxel específico sobre otros. usaremos esta propiedad para crear una ventana con forma.
En este artículo, intentaremos implementar una ventana con forma en Java creando una ventana transparente y luego pintando el panel y luego agregando el Panel a la ventana.

  • El método setBackground(Color c) se utiliza para establecer el color de fondo en el color c.
  • La clase de color se utiliza para crear un color de transparencia requerida.


Métodos :

  1. setBackground(Color c) : método para establecer el color de fondo en el color c
  2. color(int r, int g, int b, int alpha) : crea un nuevo color con el valor rojo, verde, azul y alfa especificado. donde alfa es el valor de translucidez donde 255 es opaco y 0 es transparente.
  3. getRGB(int x, int y) : devuelve el valor RGB de la Coordenada x, y
  4. setColor(Color c) : establece el color de los gráficos en c.

Ejemplos:

  1. Ejemplo 1

    Aporte :

    Producción:

  2. Ejemplo 2

    Aporte :

    Producción:

  3. Ejemplo 3:
    Entrada:



    Salida 3:

Explicación: aquí, en la entrada, podemos ver que el fondo se vuelve transparente, mientras que el
símbolo de GeeksforGeeks permanece como estaba. A través del fondo transparente podemos ver la ventana de abajo. Hemos separado el logo de su fondo y lo hemos pintado sobre una ventana transparente.
El siguiente programa ilustrará cómo crear una ventana con forma usando translucidez por píxel.

Java

// Java Program to implement the shaped window
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
class solve extends JFrame {
  
    // main class
    public static void main(String[] args)
    {
        // try block
        try {
  
            // create a window
            JWindow w = new JWindow();
  
            // set a transparent  background of the window
            w.setBackground(new Color(0, 0, 0, 0));
  
            // read the image
            BufferedImage i = ImageIO.read(new File("f:/gfg.png"));
  
            // create a panel
            JPanel p = new JPanel() {
  
                // paint the panel
                public void paintComponent(Graphics g)
                {
                    // extract the pixel of the image
                    for (int ii = 1; ii < i.getHeight(); ii++)
                        for (int j = 1; j < i.getWidth(); j++) {
                            // get the color of pixel
                            Color ty = new Color(i.getRGB(j, ii));
  
                            // if the color is more than 78 % white ignore it keep it transparent
                            if (ty.getRed() > 200 && ty.getGreen() > 200 && ty.getBlue() > 200)
                                g.setColor(new Color(0, 0, 0, 0));
                            // else set  the color
                            else
                                g.setColor(new Color(i.getRGB(j, ii)));
  
                            // draw a pixel using a line.
                            g.drawLine(j, ii, j, ii);
                        }
                }
            };
  
            // add panel
            w.add(p);
  
            // set the location
            w.setLocation(350, 300);
  
            // set the size of the window
            w.setSize(900, 900);
  
            // set the visibility of the window
            w.setVisible(true);
        }
        // catch any exception
        catch (Exception e) {
  
            // show the error
            System.err.println(e.getMessage());
        }
    }
}

Entrada 1:

Salida 1:



Entrada 2:



Salida 2:




Entrada 3:



Salida 3:

Nota:


He elegido el color blanco como fondo así que lo he separado de la imagen y lo he hecho transparente. Queda a discreción del programador elegir el fondo de la imagen.

Nota: es posible que los programas anteriores no se ejecuten en un compilador en línea; utilice un IDE sin conexión.
Se recomienda utilizar la última versión de Java para ejecutar los programas anteriores, el usuario puede tener problemas si se utilizan versiones anteriores de Java.

Publicación traducida automáticamente

Artículo escrito por andrew1234 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *