La clase Graphics proporciona métodos de dibujo básicos y la clase Graphics2D proporciona capacidades de dibujo más potentes. Esta sección explica la clase Graphics y la siguiente sección explica Graphics2D.
La clase Gráficos proporciona métodos básicos de dibujo geométrico, que incluyen principalmente: dibujar segmentos de línea, dibujar rectángulos, dibujar círculos, dibujar gráficos en colores, dibujar elipses, dibujar arcos, dibujar polígonos, etc.
1. Dibuja una línea <br />Para dibujar un segmento de línea en la ventana, puedes usar el método drawLine() de la clase Graphics:
dibujarLínea(int x1,int y1,int x2,int y2)
Por ejemplo, el siguiente código dibuja un segmento de línea entre el punto (3,3) y el punto (50,50) y dibuja un punto en el punto (100,100).
g.drawLine(3,3,50,50);//Dibuja un segmento de línea g.drawLine(100,100,100,100);//Dibuja un punto.
2. Dibuja un rectángulo <br />Hay dos tipos de rectángulos: regulares y redondeados.
(1) Existen dos métodos para dibujar rectángulos ordinarios:
drawRect(int x, int y, int width, int height): dibuja un rectángulo rodeado por una estructura alámbrica. Los parámetros xey especifican la posición de la esquina superior izquierda, y los parámetros ancho y alto son el ancho y alto del rectángulo.
fillRect(int x, int y, int width, int height): rellena un rectángulo con un color predeterminado para obtener un bloque rectangular de color.
El siguiente código es un ejemplo de cómo dibujar un rectángulo:
g.drawRect(80,100,40,25);//Dibuja el marco de alambre g.setColor(Color.amarillo);g.fillRect(20,70,20,30);//Dibuja el bloque para colorear
(2) Hay dos formas de dibujar un rectángulo redondeado:
drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight): Es un rectángulo redondeado rodeado de líneas. Los parámetros xey especifican la posición de la esquina superior izquierda del rectángulo; los parámetros ancho y alto son el ancho y alto del rectángulo; arcWidth y arcHeight son el diámetro transversal y el diámetro longitudinal del arco de filete, respectivamente.
fillRoundRect(int x, int y, int width, int height, int arcWidth, int archeight): es un rectángulo redondeado relleno con un color predeterminado. El significado de cada parámetro es el mismo que el del método anterior.
El siguiente código es un ejemplo de cómo dibujar un rectángulo:
g.drawRoundRect(10,10,150,70,40,25);//Dibuja un rectángulo redondeado g.setColor(Color.blue); g.fillRoundRect(80,100,100,100,60,40);//Pinta un bloque rectangular redondeado g.drawRoundRect(10,150,40,40,40,40);//Dibuja un círculo g.setColor(Color.red); g.fillRoundRect(80,100,100,100,100,100);//Dibuja un círculo
Puedes dibujar un círculo dibujando un rectángulo redondeado. Cuando el ancho y la altura del rectángulo son iguales, el diámetro transversal del arco redondeado y el diámetro longitudinal del arco redondeado también son iguales, e iguales al ancho y la altura del. rectángulo, se dibuja un círculo. Vea los comentarios en el ejemplo anterior. El primero es dibujar un círculo y el segundo es pintar un bloque circular.
3. Dibujar un rectángulo tridimensional <br />Hay dos métodos para dibujar un rectángulo tridimensional:
draw3DRect(int x,int y,int width,int height, boolean elevado): dibuja un rectángulo resaltado. Entre ellos, xey especifican la posición de la esquina superior izquierda del rectángulo, los parámetros ancho y alto son el ancho y alto del rectángulo, y el parámetro planteado es si está resaltado o no.
fill3DRect(int x,int y,int width,int height,boolean elevado): Rellena un rectángulo resaltado con un color predeterminado.
El siguiente código es un ejemplo de cómo dibujar un rectángulo que sobresale:
g.draw3DRect(80,100,40,25,true);//Dibujar una estructura alámbrica g.setColor(Color.amarillo); g.fill3DRect(20,70,20,30,true);//Dibujar un bloque para colorear
4. Dibuja una elipse <br />La elipse está determinada por los ejes horizontal y vertical de la elipse. Hay dos formas de dibujar un óvalo:
drawOval(int x, int y, int width, int height): dibuja una elipse rodeada de líneas. Los parámetros xey especifican la posición de la esquina superior izquierda de la elipse, y los parámetros ancho y alto son los ejes horizontal y vertical.
fillOval(int x, int y, int width, int height): es un óvalo relleno con un color predeterminado y es un bloque para colorear. También puedes utilizar el método de dibujar una elipse para dibujar un círculo. Cuando el eje horizontal y el eje vertical son iguales, la elipse dibujada es un círculo.
El siguiente código es un ejemplo de cómo dibujar una elipse:
g.drawOval(10,10,60,120);//Dibuja una elipse g.setColor(Color.cyan);g.fillOval(100,30,60,60);//Pinta un círculo g.setColor(Color.magenta ) ;g.fillOval(15,140,100,50);//Pinta la elipse
5. Dibuja un arco
Hay dos formas de dibujar un arco:
drawArc(int x, int y, int width, int height, int startAngle, int arcAngle): dibuja una línea de arco como parte de la elipse. El centro de la elipse es el centro de su rectángulo circundante, donde los parámetros son las coordenadas (x, y) de la esquina superior izquierda del rectángulo circundante, el ancho es el ancho y la altura es la altura. La unidad del parámetro startAngle es "grados", y el ángulo inicial de 0 grados se refiere a la posición de las 3 en punto. Los parámetros startAngle y arcAngle indican que a partir del ángulo startAngle, se dibuja un arco de grados arcAngle en sentido antihorario. Por convención, los grados positivos están en el sentido contrario a las agujas del reloj. Los grados negativos están en el sentido de las agujas del reloj, por ejemplo, -90 grados son las 6 en punto.
fillArc(int x, int y, int width, int height, int startAngle, int arcAngle): utiliza el color establecido por el método setColor() para dibujar una parte de la elipse coloreada.
El siguiente código es un ejemplo de cómo dibujar un arco:
g.drawArc(10,40,90,50,0,180);//Dibuja una línea de arco g.drawArc(100,40,90,50,180,180);//Dibuja una línea de arco g.setColor(Color.amarillo); g.fillArc(10,100,40,40,0,-270);//Rellena los tres cuartos de la elipse que faltan en la esquina superior derecha g.setColor(Color.green); ,- 270);//Rellena las tres cuartas partes de la esquina inferior izquierda que falta de la elipse
6. Dibujar polígonos <br />Un polígono es una figura plana cerrada formada al conectar múltiples segmentos de línea de extremo a extremo. Las coordenadas x e y de los puntos finales de los segmentos de línea del polígono se almacenan en dos matrices respectivamente. Dibujar un polígono es conectarlos con segmentos de línea recta en el orden de los puntos de coordenadas dados. Los siguientes son dos métodos comúnmente utilizados para dibujar polígonos:
drawPolygon(int xpoints[],int yPoints[],int nPoints): dibuja un polígono
fillPolygon(int xPoints[],int yPoints[],int nPoints): colorea el polígono con el color establecido por el método setColor(). La matriz xPoints[] almacena puntos de coordenadas x, yPoints[] almacena puntos de coordenadas y y nPoints es el número de puntos de coordenadas.
Tenga en cuenta que el método anterior no cierra automáticamente el polígono. Para dibujar un polígono cerrado, el último punto del punto de coordenadas dado debe ser el mismo que el primer punto. El siguiente código implementa llenar un triángulo y dibujar un octágono.
int px1[]={50,90,10,50};// Se puede dibujar un polígono solo cuando el primer y el último punto son iguales int py1[]={10,50,50,10}; ]={140,180,170,180,140,100,110,140}; py2[]={5,25,35,45,65,35,25,5}; g.setColor(Color.blue); g.fillPolygon(px1,py1,4); ; g.drawPolygon(px2,py2,9);
También puedes utilizar objetos poligonales para dibujar polígonos. Cree un objeto poligonal usando la clase de polígono Polygon y luego use este objeto para dibujar polígonos. Métodos principales de la clase Polygon:
Por ejemplo, el siguiente código dibuja un triángulo y lo rellena con un triángulo amarillo. Tenga en cuenta que utilizar un objeto poligonal para dibujar un polígono cerrado no requiere que el primer y el último punto coincidan.
int x[]={140,180,170,180,140,100,110,100}; int y[]={5,25,35,45,65,45,35,25}; polígono1=nuevo polígono(); .addPoint(90,50); polígono1.addPoint(10,50); g.drawPolygon(polygon1); g.setColor(Color.amarillo); polígono polígono2 = new Polygon(x,y,8);
7. Borrar bloque rectangular <br />Cuando necesite tener un rectángulo vacío en medio de un gráfico coloreado, puede llenar un bloque rectangular con el color de fondo, lo que equivale a usar un "borrador" en el bloque rectangular. El método es:
clearRect(int x, int y, int width, int height): borra el color de un bloque rectangular especificado por los parámetros.
Por ejemplo, el siguiente código implementa un color que borra un bloque rectangular en un círculo:
g.setColor(Color.azul); g.fillOval(50,50,100,100);g.clearRect(70,70,40,55);
8. Limite el área de visualización del dibujo <br />Utilice un rectángulo para representar el área de visualización del gráfico. Se requiere que el gráfico sea válido dentro del rango especificado. Los nuevos valores de coordenadas no se recalcularán y los excedidos. La parte no se mostrará automáticamente. El método es clipRect (int x, int y, int ancho, int alto), que limita la visualización de gráficos al área especificada y no muestra la parte sobrante. Cuando se cubren varias áreas restringidas, se obtiene el área de intersección de las áreas restringidas. Por ejemplo, código:
g.clipRect(0,0,100,50);g.clipRect(50,25,100,50);
equivalente a
g.clipRect(50,25,50,25);
9. Copiar gráficos <br />Utilice el método copyArea() de la clase Graphics para copiar gráficos. El formato de uso es:
copyArea (int x, int y, int width, int height, int dx, int dy), dx y dy representan respectivamente el número de píxeles desplazados al pegar los gráficos en la posición original. Los valores positivos significan desplazamiento hacia la derecha o. Los valores negativos se desplazan hacia la izquierda o hacia arriba. El punto de referencia para el desplazamiento es la coordenada de la esquina superior izquierda del rectángulo a copiar.
Por ejemplo, el siguiente código ilustra la copia de gráficos personalizando parte de un rectángulo y la totalidad de otro rectángulo.
g.drawRect(10,10,60,90); g.fillRect(90,10,60,90); g.copyArea(40,50,60,70,-20,80); 50,60,60,10,80);
[Ejemplo] Una pequeña aplicación reescribe el método update() para borrar solo el bloque circular, no el texto, y la ventana muestra un cuadrado rojo en constante movimiento.
importar java.applet.*;importar java.awt.*;clase pública Ejemplo7_3 extiende Applet{ int i=1; public void init(){ setBackground(Color.amarillo } public void paint(Gráficos g){ i = i); +8; si(i>160)i=1; g.setColor(Color.rojo);g.fillRect(i,10,20,20); g.drawString("Estoy aprendiendo el método update()",100,100); try{ Thread.sleep(100); } catch(InterruptedException e){} repaint() } public void update(Graphics g){ g. .clearRect (i,10,200,100);// No borre "Estoy aprendiendo el método update()" paint(g }}
Un programa de dibujo general debe heredar JFrame y definir una subclase de ventana JFrame, y también heredar JPanel y definir una subclase de JPanel. Redefina el método paintComponent () en la subclase JPanel y llame al método de dibujo en este método para dibujar varios gráficos.
[Ejemplo] Aplicación que utiliza el modo de dibujo XOR.
importar javax.swing.*;importar java.awt.*;clase pública Ejemplo7_4 extiende JFrame{ public static void main(String args[]){ GraphicsDemo myGraphicsFrame = new GraphicsDemo()}}clase ShapesPanel extiende JPanel{ SharpesPanel(); setBackground(Color.white); } public void paintComponent(Gráficos g){ super.paintComponent(g); setBackground(Color.amarillo); //El color de fondo es amarillo g.setXORMode(Color.red); //Establece el modo de dibujo XOR y el color es rojo g.setColor(Color.green); 20, 80, 40); //El color real es una mezcla de verde + amarillo = gris g.setColor(Color.amarillo); 40); //La segunda mitad es amarillo+amarillo=leer, la primera mitad es amarillo+gris g.setColor(Color.green); g.fillRect(20, 70, 80, 40); verde+amarillo Color mixto = gris.g.fillRect(60, 70, 80, 40 //La primera mitad es (verde+amarillo)+gris); =Color de fondo, la última mitad es verde+amarillo = gris g.setColor(Color.green); g.drawLine(80, 100, 180, 200); //La línea recta es verde+amarillo = gris g.drawLine( 100, 100, 200, 200); //Igual que arriba/*Dibuja una línea recta parcialmente superpuesta. La sección central de la línea recta original es gris+gris=color de fondo y la parte extendida es verde+amarillo=gris.*/ g.drawLine(140, 140). , 220, 220); g. setColor(Color.amarillo); //Analiza los cambios de color de las siguientes líneas rectas, que se superponen con la fuerza anterior g.drawLine(20, 30, 160, 30); g.drawLine(20, 75, 160, 75); }}class GraphicsDemod extiende JFrame{ public GraphicsDemo(){ this.getContentPane().add(new ShapesPanel()); (300, 300); establecerVisible(verdadero);