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 :
- setBackground(Color c) : método para establecer el color de fondo en el color c
- 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.
- getRGB(int x, int y) : devuelve el valor RGB de la Coordenada x, y
- setColor(Color c) : establece el color de los gráficos en c.
Ejemplos:
- Ejemplo 1
Aporte :
Producción:
- Ejemplo 2
Aporte :
Producción:
- 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