La classe Graphics fournit des méthodes de dessin de base et la classe Graphics2D offre des fonctionnalités de dessin plus puissantes. Cette section explique la classe Graphics et la section suivante explique Graphics2D.
La classe Graphics fournit des méthodes de dessin géométrique de base, notamment : dessiner des segments de ligne, dessiner des rectangles, dessiner des cercles, dessiner des graphiques colorés, dessiner des ellipses, dessiner des arcs, dessiner des polygones, etc.
1. Tracer une ligne <br />Pour dessiner un segment de ligne dans la fenêtre, vous pouvez utiliser la méthode drawLine() de la classe Graphics :
drawLine(int x1,int y1,int x2,int y2)
Par exemple, le code suivant dessine un segment de ligne entre le point (3,3) et le point (50,50), et dessine un point au point (100,100).
g.drawLine(3,3,50,50);//Dessine un segment de ligne g.drawLine(100,100,100,100);//Dessine un point.
2. Dessinez un rectangle <br />Il existe deux types de rectangles : réguliers et arrondis.
(1) Il existe deux méthodes pour dessiner des rectangles ordinaires :
drawRect(int x, int y, int width, int height) : dessinez un rectangle entouré d'un filaire. Les paramètres x et y précisent la position du coin supérieur gauche, et les paramètres width et height sont la largeur et la hauteur du rectangle.
fillRect(int x, int y, int width, int height) : remplit un rectangle avec une couleur prédéterminée pour obtenir un bloc rectangulaire coloré.
Le code suivant est un exemple de dessin d'un rectangle :
g.drawRect(80,100,40,25);//Dessinez le fil de fer g.setColor(Color.white);g.fillRect(20,70,20,30);//Dessinez le bloc de coloriage
(2) Il existe deux manières de dessiner un rectangle arrondi :
drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) : C'est un rectangle arrondi entouré de lignes. Les paramètres x et y spécifient la position du coin supérieur gauche du rectangle ; les paramètres width et height sont la largeur et la hauteur du rectangle ; arcWidth et arcHeight sont respectivement le diamètre transversal et le diamètre longitudinal de l'arc de congé.
fillRoundRect(int x, int y, int width, int height, int arcWidth, int archeight) : est un rectangle arrondi rempli d'une couleur prédéterminée. La signification de chaque paramètre est la même que celle de la méthode précédente.
Le code suivant est un exemple de dessin d'un rectangle :
g.drawRoundRect(10,10,150,70,40,25);//Dessine un rectangle arrondi g.setColor(Color.blue); g.fillRoundRect(80,100,100,100,60,40);//Peindre un bloc rectangulaire arrondi g.drawRoundRect(10,150,40,40,40,40);//Dessiner un cercle g.setColor(Color.red); g.fillRoundRect(80,100,100,100,100,100);//Dessiner un cercle
Vous pouvez dessiner un cercle en dessinant un rectangle arrondi. Lorsque la largeur et la hauteur du rectangle sont égales, le diamètre transversal de l'arc arrondi et le diamètre longitudinal de l'arc arrondi sont également égaux, et égaux à la largeur et à la hauteur de l'arc arrondi. rectangle, un cercle est dessiné. Voir les commentaires dans l'exemple ci-dessus. Le premier consiste à dessiner un cercle et le second à peindre un bloc circulaire.
3. Dessinez un rectangle tridimensionnel <br />Il existe deux méthodes pour dessiner un rectangle tridimensionnel :
draw3DRect(int x,int y,int width,int height, boolean raise) : dessinez un rectangle en surbrillance. Parmi eux, x et y précisent la position du coin supérieur gauche du rectangle, les paramètres largeur et hauteur sont la largeur et la hauteur du rectangle, et le paramètre relevé est s'il est mis en surbrillance ou non.
fill3DRect(int x,int y,int width,int height,boolean raise) : remplissez un rectangle en surbrillance avec une couleur prédéterminée.
Le code suivant est un exemple de dessin d'un rectangle saillant :
g.draw3DRect(80,100,40,25,true);//Dessiner un filaire g.setColor(Color.white); g.fill3DRect(20,70,20,30,true);//Dessiner un bloc de coloriage
4. Dessinez une ellipse <br />L'ellipse est déterminée par les axes horizontal et vertical de l'ellipse. Il existe deux manières de dessiner un ovale :
drawOval(int x, int y, int width, int height) : dessine une ellipse entourée de lignes. Les paramètres x et y précisent la position du coin supérieur gauche de l'ellipse, et les paramètres largeur et hauteur sont les axes horizontal et vertical.
fillOval(int x, int y, int width, int height) : C'est un ovale rempli d'une couleur prédéterminée et est un bloc de coloration. Vous pouvez également utiliser la méthode de dessin d'une ellipse pour dessiner un cercle. Lorsque l'axe horizontal et l'axe vertical sont égaux, l'ellipse dessinée est un cercle.
Le code suivant est un exemple de dessin d'une ellipse :
g.drawOval(10,10,60,120);//Dessiner une ellipse g.setColor(Color.cyan);g.fillOval(100,30,60,60);//Peindre un cercle g.setColor(Color.magenta ) ;g.fillOval(15,140,100,50);//Peindre l'ellipse
5. Dessinez un arc
Il existe deux manières de dessiner un arc :
drawArc (int x, int y, int width, int height, int startAngle, int arcAngle) : tracez une ligne d'arc dans le cadre de l'ellipse. Le centre de l'ellipse est le centre de son rectangle englobant, où les paramètres sont les coordonnées (x, y) du coin supérieur gauche du rectangle englobant, la largeur est la largeur et la hauteur est la hauteur. L'unité du paramètre startAngle est "degré", et l'angle de départ de 0 degré fait référence à la position 3 heures. Les paramètres startAngle et arcAngle indiquent qu'à partir de l'angle startAngle, un arc de degrés arcAngle est dessiné dans le sens inverse des aiguilles d'une montre. . Par convention, les degrés positifs correspondent au sens inverse des aiguilles d'une montre. Par exemple, -90 degrés correspond à 6 heures.
fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) : utilisez la couleur définie par la méthode setColor() pour dessiner une partie de l'ellipse colorée.
Le code suivant est un exemple de dessin d'un arc :
g.drawArc(10,40,90,50,0,180);//Dessiner une ligne d'arc g.drawArc(100,40,90,50,180,180);//Dessiner une ligne d'arc g.setColor(Color.jaune); g.fillArc(10,100,40,40,0,-270);//Remplir les trois quarts de l'ellipse manquant le coin supérieur droit g.setColor(Color.green); g.fillArc(60,110,110,60,-90); ,- 270);//Remplir les trois quarts du coin inférieur gauche manquant de l'ellipse
6. Dessinez des polygones <br />Un polygone est une figure plane fermée formée en reliant plusieurs segments de ligne bout à bout. Les coordonnées x et y des extrémités des segments de ligne de polygone sont stockées respectivement dans deux tableaux. Dessiner un polygone consiste à les connecter avec des segments de ligne droite dans l'ordre des points de coordonnées donnés. Voici deux méthodes couramment utilisées pour dessiner des polygones :
drawPolygon(int xpoints[],int yPoints[],int nPoints) : dessiner un polygone
fillPolygon(int xPoints[],int yPoints[],int nPoints) : coloriez le polygone avec la couleur définie par la méthode setColor(). Le tableau xPoints[] stocke les points de coordonnées x, yPoints[] stocke les points de coordonnées y et nPoints est le nombre de points de coordonnées.
Notez que la méthode ci-dessus ne ferme pas automatiquement le polygone. Pour dessiner un polygone fermé, le dernier point du point de coordonnées donné doit être le même que le premier point. Le code suivant implémente le remplissage d'un triangle et le dessin d'un octogone.
int px1[]={50,90,10,50};//Un polygone ne peut être dessiné que lorsque le premier et le dernier points sont identiques 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);
Vous pouvez également utiliser des objets polygones pour dessiner des polygones. Créez un objet polygone à l'aide de la classe de polygone Polygon, puis utilisez cet objet pour dessiner des polygones. Principales méthodes de la classe Polygon :
Par exemple, le code suivant dessine un triangle et le remplit d'un triangle jaune. Notez que l'utilisation d'un objet polygone pour dessiner un polygone fermé ne nécessite pas que le premier et le dernier points coïncident.
int x[]={140,180,170,180,140,100,110,100}; int y[]={5,25,35,45,65,45,35,25}; .addPoint(90,50); polygon1.addPoint(10,50); g.drawPolygon(polygon1); g.setColor(Color.jaune); Polygone polygone2 = nouveau Polygone(x,y,8);
7. Effacer le bloc rectangulaire <br />Lorsque vous avez besoin d'avoir un rectangle vide au milieu d'un graphique coloré, vous pouvez remplir un bloc rectangulaire avec la couleur de fond, ce qui équivaut à utiliser une "gomme" sur le bloc rectangulaire. La méthode est :
clearRect(int x, int y, int width, int height) : Efface la coloration d'un bloc rectangulaire spécifié par les paramètres.
Par exemple, le code suivant implémente une coloration qui efface un bloc rectangulaire dans un cercle :
g.setColor(Color.blue); g.fillOval(50,50,100,100);g.clearRect(70,70,40,55);
8. Limitez la zone d'affichage du dessin <br />Utilisez un rectangle pour représenter la zone d'affichage du graphique. Le graphique doit être valide dans la plage spécifiée. Les nouvelles valeurs de coordonnées ne seront pas recalculées et les valeurs dépassées. la partie ne sera pas affichée automatiquement. La méthode est clipRect(int x, int y, int width, int height), qui limite l'affichage des graphiques à la zone spécifiée et n'affiche pas la partie excédentaire. Lorsque plusieurs zones réglementées sont couvertes, la zone d'intersection des zones réglementées est obtenue. Par exemple, codez :
g.clipRect(0,0,100,50);g.clipRect(50,25,100,50);
Équivalent à
g.clipRect(50,25,50,25);
9. Copier les graphiques <br />Utilisez la méthode copyArea() de la classe Graphics pour copier les graphiques. Le format d'utilisation est :
copyArea(int x, int y, int width, int height, int dx, int dy), dx et dy représentent respectivement le nombre de pixels décalés en collant les graphiques à la position d'origine. Les valeurs positives signifient un décalage vers la droite ou. vers le bas Les valeurs négatives sont des décalages vers la gauche ou vers le haut. Le point de référence du déplacement est la coordonnée du coin supérieur gauche du rectangle à copier.
Par exemple, le code suivant illustre la copie de graphiques, en personnalisant une partie d'un rectangle et la totalité d'un autre rectangle.
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);
[Exemple] Une petite application réécrit la méthode update() pour effacer uniquement le bloc circulaire, pas le texte, et la fenêtre affiche un carré rouge en mouvement constant.
import java.applet.*;import java.awt.*;public class Exemple7_3 extends Applet{ int i=1; public void init(){ setBackground(Color.white); +8; si(i>160)i=1; g.setColor(Color.red);g.fillRect(i,10,20,20); g.drawString("J'apprends la méthode update()",100,100); try{ Thread.sleep(100); } catch(InterruptedException e){} repaint(); .clearRect (i,10,200,100);//Ne pas effacer "J'apprends la méthode update()" paint(g }}
Un programme de dessin général doit hériter de JFrame et définir une sous-classe de fenêtre JFrame, ainsi qu'hériter de JPanel et définir une sous-classe de JPanel. Redéfinissez la méthode paintComponent() dans la sous-classe JPanel et appelez la méthode de dessin dans cette méthode pour dessiner divers graphiques.
[Exemple] Application utilisant le mode de dessin XOR.
import javax.swing.*;import java.awt.*;public class Exemple7_4 étend JFrame{ public static void main(String args[]){ GraphicsDemo myGraphicsFrame = new GraphicsDemo( }}class ShapesPanel extends JPanel{ SharpesPanel(){ setBackground(Color.white); } public void paintComponent(Graphics g){ super.paintComponent(g); setBackground(Color.yellow); //La couleur d'arrière-plan est jaune g.setXORMode(Color.red); //Définit le mode de dessin XOR et la couleur est rouge g.setColor(Color.green); 20, 80 , 40); //La couleur réelle est un mélange de vert + jaune = gris g.setColor(Color.white); 40); //La seconde moitié est jaune+jaune=lu, la première moitié est jaune+gris g.setColor(Color.green); g.fillRect(20, 70, 80, 40); vert+jaune Couleur mixte = gris g.fillRect(60, 70, 80, 40); //La première moitié est (vert+jaune)+gris. =Couleur de fond, la dernière moitié est vert+jaune = gris g.setColor(Color.green); g.drawLine(80, 100, 180, 200); //La ligne droite est verte+jaune = gris g.drawLine(); 100, 100, 200, 200); //Identique à ci-dessus/*Dessinez une ligne droite se chevauchant partiellement. La section centrale de la ligne droite d'origine est gris+gris=couleur d'arrière-plan et la partie étendue est vert+jaune=gris.*/ g.drawLine(140, 140. , 220, 220); g. setColor(Color.white); //Analyser les changements de couleur des lignes droites suivantes, qui chevauchent la force précédente g.drawLine(20, 30, 160, 30); g.drawLine(20, 75, 160, 75); }}class GraphicsDemod extends JFrame{ public GraphicsDemo(){ this.getContentPane().add(new ShapesPanel()); setTile("Démonstration de la méthode de dessin de base"); (300, 300); setVisible(vrai }}