Dibujo de gráficos simples de Java y descripción de problemas comunes.

Prefacio:

En el proceso de aprendizaje de Java, recientemente entré en contacto con contenido relacionado con el dibujo gráfico. Para completar la tarea en mis estudios, leo muchos artículos y programas de los grandes. Ahora que la tarea está hecha, para hacer que lo que aprendí recientemente me pertenezca, decidí ordenarlo. Si lo que escribí está mal, bienvenido a criticarme y corregirme.

En cuanto a la elección del contenedor de gráficos para el dibujo simple:

En primer lugar, hay una premisa a tener en cuenta. Cuando dibujamos gráficos, naturalmente llamamos a la clase Graphics para dibujar. Pero deberíamos encontrar un contenedor para guardar los gráficos dibujados. Por tanto, los contenedores disponibles son las subclases Panel y Canvas de awt. El lienzo puede entenderse como lienzo, que es una especie de contenedor. La clase Panel también es un contenedor, los cuales pueden alojar objetos Graphics, pero la clase Panel puede alojar más tipos de objetos. Por supuesto, cuando simplemente dibujamos gráficos simples, no hay problema en usar la clase Canvas. Pero usando la clase Panel, la plasticidad y mantenibilidad obvias del programa serán más fuertes. En java, también existe Javax.swing.JPanel para expandir el Panel. Cuando empezamos a aprender, Panel era suficiente.

import javax.swing.JFrame;//框架
import javax.swing.JPanel;//容器
import java.awt.Canvas;

 Sobre la relación entre Graphics y Graphics2D:

Java tiene Graphics extendidos, es decir, Graphics2D es una extensión de Graphics. Cuando usamos gráficos, a menudo vemos su conversión forzada. Convierta Graphics a Graphics2D type para su uso, y a menudo hago esto cuando escribo programas.

 Graphics2D gx=(Graphics2D) g;

 Acerca de las herramientas de dibujo de gráficos de uso común:

Dibujar líneas rectas:

abstract void drawLine(int x1,int y1,int x2,int y2) Llame a esta función para dibujar una línea recta desde (x1,y1) hasta (x2,y2)

	gk.drawLine(gw*i,0,gw*i,180);

Dibuja una elipse (círculo):

abstract void dibujarOval(int x, int y, int ancho, int alto) Llame a esta función para dibujar una elipse hueca. El parámetro formal representa la información del rectángulo delimitador de esta elipse. x, y representan las coordenadas de la esquina superior izquierda del rectángulo delimitador, y ancho y alto son el ancho y el alto del rectángulo delimitador. Sobre esta base, cambie la línea, cambie el rectángulo exterior a un cuadrado y luego dibuje un círculo.

public abstract void fillOval(int x, int y, int ancho, int alto) Llame a esta función para dibujar una elipse rellena. Otra información de parámetros es consistente con la función de dibujar una elipse hueca.

gk.drawOval(20,20,20,20);//空心圆
gk.fillOval(80,80,20,20);//实心圆

Dibuja un rectángulo:

abstract void dibujarRect(int x, int y, int ancho, int alto) Llame a esta función para dibujar un rectángulo. x, y son las coordenadas del punto en la esquina superior izquierda del rectángulo, ancho y alto son el ancho y alto del rectángulo

abstract void fillRect(int ,x, int y, int width, int height ) Llame a esta función para dibujar un rectángulo relleno. De manera similar, x, y es un punto en la esquina superior izquierda del rectángulo, y el ancho y la altura son el ancho y la altura del rectángulo.

	gx.fillRect(x,y,20,20);//绘制方形
    gx.drawRect(x,y,20,20);//绘制空心矩形

Por supuesto, también tenemos otras funciones para dibujar imágenes, desde este punto de vista, Java sigue siendo muy conveniente. Para otras funciones, puede consultar el manual jdk, que es simple y conveniente.

Establecer color de línea:

A menudo nos encontramos con la necesidad de establecer el color de los gráficos dibujados. Sin color, los gráficos inevitablemente parecerán monótonos cuando se dibujen. Nuestros gráficos tienen una función para establecer el color de la línea.

abstract void setColor( Color c ) Llamar a esta función puede establecer el color de la línea, que en realidad es equivalente a establecer el color del pincel al pintar. El color de pincel predeterminado, que se puede considerar negro. El parámetro formal es en realidad el objeto de Color. Y configuramos los objetos de color encapsulados en Color, como Color.RED, Color.BLUE. También podemos configurar manualmente el objeto de color RGB. Habiendo dicho eso, debemos mencionar que cuando usamos el objeto Color, necesitamos hacer referencia a la biblioteca Color. Color es una biblioteca perteneciente a awt. Su código de referencia se puede escribir así.

import java.awt.Color;//色彩

 Preestablecemos el color del pincel antes de dibujar y luego dibujamos la imagen para obtener la imagen del color que queremos. En cuanto al dibujo de gráficos sólidos, lo mismo es cierto. Solo necesitamos entender el pincel como pintura.

Graphics2D gx=(Graphics2D) g;
gx.setColor(Color.GREEN);//改变画笔颜色
gx.fillOval(x,y,20,20);//绘制圆形

 Un ejemplo de dibujo:

Personalmente siento que este ejemplo puede no ser muy bueno para este módulo. Debido a que esta pregunta involucra la interacción con el mouse, como un ejemplo de simplemente explicar el dibujo de una imagen, puede haber interferencia. Pero no tengo un buen ejemplo a mano por ahora. Para decirlo sin rodeos, el autor es demasiado perezoso para escribir previamente el código adecuado para el ejemplo. Lectores, presten atención.

Escriba un programa Java, cree un formulario y logre la interacción. "Haga clic con el botón izquierdo del mouse" en el formulario, dibuje un "círculo verde" en el cursor; "haga clic con el botón derecho del mouse" en el formulario, dibuje un "cuadro rojo" en el cursor; tecla” para borrar todo lo dibujado “ círculos” y “cuadrados”.

No lo sacaré en otros lugares, sacaré la parte donde configuro los gráficos y lo compartiré.

class MyJpanel extends JPanel{
	int x,y;
	int num=0;
	public void paint(Graphics g){
		Graphics2D gx=(Graphics2D) g;
		if(num==1){
			gx.setColor(Color.GREEN);//改变画笔颜色
			gx.fillOval(x,y,20,20);//绘制圆形
		}//单击左键
		else if(num==3){
			gx.setColor(Color.WHITE);
			super.paint(gx);//清除画面内容
		}//双击左键
		else if(num==2){
			gx.setColor(Color.RED);
			gx.fillRect(x,y,20,20);//绘制方形
		}//单击右键
	}
}//容器

Supongo que te gusta

Origin blog.csdn.net/qq_58754996/article/details/120678554
Recomendado
Clasificación