dibujando con Graphics2D en un panel con trasparencia

Technology

header ads

dibujando con Graphics2D en un panel con trasparencia

los componentes a utilizar Graphics2D en el cual vamos a dibujar lineas en 2D , linea o arco curvo en 2D y 2 cuadrados uno con media transparencia y otro en color ó textura en gradiante como la siguiente imagen nos muestra:
 

para ello cree una clase llamada panel2d y en esta clase ponemos el siguiente codigo:





import javax.swing.JComponent;
import javax.swing.JFrame;

import java.awt.*;
import java.awt.geom.*;

//@SuppressWarnings("serial")
// By extending JFrame we have our applet
public class panel2d extends JFrame {

    public static void main(String[] args) {

        new panel2d();

    }

    public panel2d() {

        this.setSize(500, 500);

        this.setTitle("DIBUJANDO 2 D JAVAYOTROS.BLOGSPOT.COM");

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.add(new DrawStuff(), BorderLayout.CENTER);

        this.setVisible(true);

    }

    // Creating my own component by extending JComponent
    // JComponent is the base class for all swing components. Even custom ones
    private class DrawStuff extends JComponent {

        // Graphics is the base class that allows for drawing on components
        public void paint(Graphics g) {

            // Extends graphics so you can draw dimensional shapes and images

            Graphics2D graph2 = (Graphics2D) g;

            // Establece preferencias para la prestación
// KEY_ANTIALIASING reduce artefactos en formas
// VALUE_ANTIALIAS_ON va a limpiar los bordes

            graph2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

            // La interfaz Shape sabe cómo dibujar muchas formas diferentes
/*
             * Arc2D, Arc2D.Double, Arc2D.Float, Zona, BasicTextUI.BasicCaret,
             * CubicCurve2D, CubicCurve2D.Double, CubicCurve2D.Float,
             * DefaultCaret, Ellipse2D, Ellipse2D.Double, Ellipse2D.Float,
             * GeneralPath, Line2D, Line2D.Double, Line2D.Float, Path2D,
             * Path2D.Double, Path2D.Float, Polígono, QuadCurve2D,
             * QuadCurve2D.Double, QuadCurve2D.Float, Rectángulo, Rectangle2D,
             * Rectangle2D.Double, Rectangle2D.Float, RectangularShape,
             * RoundRectangle2D, RoundRectangle2D.Double, RoundRectangle2D.Float
             */

            Shape drawLine = new Line2D.Float(20, 90, 55, 250);

            // Start x, inicia y, anchura, altura, comenzar grados de ángulo, extensión angular, OPEN, ACORDE, PIE
// Medida angular se refiere a cuántos grados continúa el arco desde el ángulo de inicio

            Shape drawArc2D = new Arc2D.Double(5, 150, 100, 100, 45, 180, Arc2D.OPEN);

            Shape drawArc2D2 = new Arc2D.Double(5, 200, 100, 100, 45, 45, Arc2D.CHORD);

            Shape drawArc2D3 = new Arc2D.Double(5, 250, 100, 100, 45, 45, Arc2D.PIE);

            // Dibujar elipse en un rectángulo definido x1, y1, x2, y2

            Shape drawEllipse = new Ellipse2D.Float(10, 10, 100, 100);

            // Redondear el rectángulo se define la altura del arco luego de arco de ancho

            Shape drawRoundRec = new RoundRectangle2D.Double(25, 25, 50, 50, 45, 45);

            // Dibuja una curva con 4 puntos

            CubicCurve2D cubicCurve = new CubicCurve2D.Double();

            // También puede establecer la curva exterior de la definición
// X1, y1, ctrlx1, ctrly1, ctrlx2, ctrly2, x2, y2

            cubicCurve.setCurve(110, 50, 300,
                    200, 200, 200, 90, 263);

            // Dibujar rectángulo definiendo x superior izquierda, y, a continuación, anchura altura

            Shape drawRect = new Rectangle2D.Float(300, 300, 150, 100);

            // // Dibuja una curva con 3 puntos
// X1, y1, ctrlx1, ctrly1, x2, y2

            Shape drawQuadCurve = new QuadCurve2D.Float(300, 100, 400, 200, 150, 300);

            Shape drawTransRect = new Rectangle2D.Double(300, 300, 75, 50);

            // Objeto Pintura define el color que se utiliza para la representación

            graph2.setPaint(Color.BLACK);

            // Llama una forma basada en las preferencias que han sido sget

            graph2.draw(drawLine);

            graph2.draw(drawArc2D);

            graph2.draw(drawArc2D2);

            graph2.draw(drawArc2D3);

            graph2.draw(drawEllipse);

            // Establecer el color de relleno

            graph2.setColor(Color.GREEN);
            // Dibujar una forma con un relleno

            graph2.fill(drawRoundRec);

            graph2.fill(drawRect);

            graph2.setPaint(Color.BLACK);

            graph2.draw(cubicCurve);

            graph2.draw(drawRect);

            graph2.draw(drawQuadCurve);

            // Esto hace que todo sea dibujado después de ser 60% transparente

            graph2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.40F));

            // Esto elimina la transparencia

            graph2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.0F));

            // Iniciar punto x, punto de partida y, iniciar color, extremo x, y final, el color final
// Puede usar códigos de colores hexagonales 0x66ffff equivale color.CYAN
// VERTICAL PENDIENTE

            GradientPaint theGradient = new GradientPaint(0, 0, Color.BLUE, 0, 60, new Color(0x66ffff));

            // Gradiente horizontal
// GradientPaint theGradient = new GradientPaint (0,0, Color.BLUE, 75,0, nuevo color (0x66ffff));

// Para hacer la última salida de color en el centro
// GradientPaint theGradient = new GradientPaint (0,0, Color.BLUE, 0,60, nuevo color (0x66ffff), true);

            graph2.setPaint(theGradient);

            graph2.fill(new Rectangle2D.Float(10, 10, 150, 100));

            graph2.fill(drawTransRect);


        }
    }
}

bueno eso es todo solo lo ejecutamos y vemos la aplicacion :)

Post a Comment