Sur la base de la classe Graphics qui fournit diverses figures géométriques de base, le langage Java étend la classe Graphics pour fournir une classe Graphics2D, qui possède des capacités de traitement graphique bidimensionnel plus puissantes et fournit une conversion de coordonnées, une gestion des couleurs et une disposition du texte plus précises. . contrôle.
Propriétés du dessin
Graphics2D définit plusieurs méthodes pour ajouter ou modifier les propriétés d'état des graphiques. Vous pouvez spécifier la largeur du pinceau et la méthode de connexion du pinceau en définissant et en modifiant les propriétés d'état ; en définissant les graphiques de transformation de translation, de rotation, de mise à l'échelle ou de découpage et en définissant la couleur et le motif des graphiques remplis, etc. Les propriétés de l'état graphique sont stockées à l'aide d'objets spécifiques.
1. attribut de trait
La propriété Stroke contrôle la largeur de la ligne, le style du stylo, la manière dont les segments sont connectés ou le motif des tirets. Pour définir cette propriété, vous devez d'abord créer un objet BasicStroke, puis appeler la méthode setStroke() pour la définir. Les méthodes de création d'objets BasicStroke sont :
BasicStroke(float w) : Spécifie la largeur de ligne w.
BasicStroke (float avec, int cap, int join) :
cap est le point final : CAP_BUTT (non modifié), CAP_ROUND (extrémité semi-circulaire), CAP_SQUARE (extrémité carrée, valeur par défaut).
Join définit la méthode de connexion à l'intersection de deux segments de ligne : JOIN_BEVEL (non modifié), JOIN_MTTER (extrémité pointue, valeur par défaut), JOIN_ROUND (extrémité arrondie).
2. attribut de peinture
La propriété paint contrôle l’effet de remplissage. Appelez d’abord la méthode suivante pour déterminer l’effet de remplissage et utilisez la méthode setPaint() pour le définir.
GradientPaint(float x1,float y1,Color c1,float x2,flaot y2,Color c2) : De (x1,y1) à (x2,y2) dégradé de couleurs de c1 à c2. Parmi eux : les paramètres c1 et c2 déterminent la couleur du dégradé de la couleur c1 à la couleur c2. Les paramètres x1, y1, x2, y2 déterminent la force du dégradé, c'est-à-dire qu'à partir du point (x1, y1) jusqu'au point (x2, y2), la couleur passe de c1 à c2.
GradientPaint(float x1, float y1, Color c1, float x2, float y2, Color c2, Boolean cyclic) : Si vous souhaitez que le dégradé se termine et soit la couleur du point de départ, cyclic doit être défini sur true.
3. attribut de transformation
L'attribut transform est utilisé pour implémenter des opérations de transformation courantes telles que la traduction graphique, la mise à l'échelle et le biseautage. Créez d’abord un objet AffineTransform, puis appelez la méthode setTransform() pour définir l’attribut transform. Enfin, le graphique est dessiné à l'aide d'un objet Graphics2D avec des propriétés spécifiées. Les méthodes de création d'objets AffineTransform sont :
Vous pouvez également créer d’abord un objet AffineTransform sans attribut de transformation, puis utiliser les méthodes suivantes pour spécifier les attributs de transformation de traduction, de rotation et de mise à l’échelle des graphiques.
Par exemple, créez un objet AffineTransform :
AffineTransform trans = new AffineTransform();
Spécifiez les propriétés de transformation de rotation autour du point pour l'objet AffineTransform :
Rotation trans. (50,0*3,1415927/180,0,90,80) ;
Définissez ensuite le "pinceau" avec la fonction de transformation de rotation ci-dessus pour l'objet Graphics2D g2d :
Graphics2D g2d = (Graphics2D)g;g2d.setTranstorm(trans);
Enfin, la méthode draw() de l'objet Graphics2D avec fonction de transformation est appelée avec l'objet graphique en paramètre. Par exemple, en supposant qu'il existe une courbe d'objet courbe quadratique, le code suivant implémente le dessin de cette courbe quadratique à l'aide de l'objet g2d avec la fonction de rotation ci-dessus :
g2d.draw(courbe);
4. attribut de clip
L'attribut clip est utilisé pour obtenir des effets de découpage. Pour définir l'attribut de découpage, vous pouvez appeler la méthode setClip() pour déterminer la forme de la zone de découpage. Plusieurs opérations setClip() sont effectuées consécutivement pour obtenir la zone de découpage à leur intersection.
5. attribut composite
L'attribut composite définit l'effet de la zone de chevauchement des graphiques. Utilisez d'abord la méthode AlphaComposite.getInstance(int Rule, float alpha) pour obtenir l'objet AlphaComposite, puis définissez l'effet de mélange via la méthode setComposite(). Les valeurs alpha vont de 0,0f (entièrement transparent) à 0,1f (entièrement opaque).
Méthodes de dessin de la classe Graphics2D
La classe Graphics2D conserve les méthodes de dessin de la classe Graphics, tout en ajoutant de nombreuses nouvelles méthodes. La nouvelle méthode dessine des formes géométriques (segments de ligne, cercles, etc.) comme un objet. Une série de classes déclarées dans le package java.awt.geom sont utilisées pour créer divers objets graphiques corporels. Les principaux sont :
Classe de segment de ligne Line2D, classe de rectangle arrondi RoundRectangle2D, classe d'ellipse Ellipse2D, classe d'arc Arc2D, classe de courbe quadratique QuadCurve2D, classe de courbe cubique CubicCurve2D.
Dessiner un graphique en utilisant les nouvelles méthodes de la classe Graphics2D. Tout d'abord, dans la méthode de redessinage paintComponent() ou paint(), forcez l'objet paramètre g dans un objet Graphics2D ; puis utilisez la méthode statique Double() fournie par la classe graphique ci-dessus pour créer l'objet du graphique ; l'objet graphique en paramètre Appelez la méthode draw() de l'objet Graphics2D pour dessiner ce graphique. Par exemple, le code suivant utilise la nouvelle méthode de Graphics2D pour dessiner des segments de ligne et des rectangles arrondis :
Graphics2D g2d = (Graphics2D)g;//Convertir le type d'objet g de Graphics en Graphics2D Line2D line = new Line2D.Double(30.0,30.0,340.0,30.0); RoundRectangle2D rRect = new; RoundRectangle2D.Double(13.0,30.0,100.0,70.0,40.0,20.0); g2d.draw(rRect);
Vous pouvez également d'abord utiliser l'objet Shape fourni par le package java.awt.geom, créer un objet Shape avec des coordonnées Float simple précision ou des coordonnées Double double précision, puis le dessiner à l'aide de la méthode draw(). Par exemple, le code suivant crée un objet arc, puis dessine l'arc :
Shape arc = new Arc2D.Float(30,30,150,150,40,100,Arc2D.OPEN);//Dessine l'arc de l'objet graphique précédemment créé;
Classe de géométrie de Graphics2D
segment de ligne
Line2D line = new Line2D.Double(2,3,200,300);//Déclarer et créer un objet segment de ligne//Le point de départ est (2, 3) et le point final est (200, 300)
rectangle
Rectangle2D rect = new Rectangle2D.Double(20,30,80,40);//Déclarez et créez un objet rectangle Le coin supérieur gauche du rectangle est (20, 30), la largeur est de 300 et la hauteur est de 40.
rectangle arrondi
RoundRectangle2D rectRound = new RoundRectangle2D.Double(20,30,130,100,18,15); //Le coin supérieur gauche est (20, 30), la largeur est 130, la hauteur est 100, l'axe long du coin arrondi est 18, et l'axe court est 15.
ovale
Ellipse2D ellipse = new Ellipse2D.Double(20,30,100,50); //Coin supérieur gauche (20, 30), la largeur est de 100, la hauteur est de 50
Arc
Arc2D arc1 = new Arc2D.Double(8,30,85,60,5,90,Arc2D.OPEN); //Le coin supérieur gauche du rectangle englobant (10, 30), largeur 85, hauteur 60, angle de départ est 5 degrés, l'angle final est de 90 degrés Arc2D arc2 = nouveau Arc2D.Double(20,65,90,70,0,180,Arc2D.CHORD); Arc2D arc3 = nouveau Arc2D.Double(40,110,50,90,0,270,Arc2D.PIE);
Les paramètres Arc2D.OPEN, Arc2D.CHORD et Arc2D.PIE indiquent respectivement si l'arc est un arc ouvert, un arc en arc ou un arc en tarte.
Courbe quadratique Une courbe quadratique est représentée par un polynôme du second ordre :
y(x)=ax2+bx+c
Une courbe quadratique doit être déterminée par trois points : le point de départ, le point de contrôle et le point final.
Courbe QuadCurve2D1 = nouveau QuadCurver2D.Double (20,10,90,65,55,115) ; Courbe QuadCurve2D2 = nouveau QuadCurver2D.Double (20,10,15,63,55,115) ; QuadCurver2D.Double(20,10,54,64,55,115);
Les six paramètres de la méthode Double() sont le point de départ, le point de contrôle et le point final de la courbe quadratique. Les points de départ et les points finaux des trois courbes quadratiques ci-dessus sont les mêmes.
Courbe cubique Une courbe cubique est représentée par un polynôme du troisième ordre :
y(x)=ax3+bx2+cx+d
Une courbe cubique nécessite quatre points pour déterminer : le point de départ, deux points de contrôle et le point final.
Courbe CubicCurve2D1 = nouvelle courbe CubicCurve2D.Double (12,30,50,75,15,15,115,93); = nouveau CubicCurve2D.Double(12,30,50,75,20,95,95,95);
Les huit paramètres de la méthode Double() sont le point de départ, deux points de contrôle et le point final de la courbe cubique.
Le processus de dessin des courbes d’équation générale est contrôlé par une boucle. Générez la valeur de la variable indépendante via une boucle, calculez la valeur de la fonction selon l'équation, puis effectuez la transformation de coordonnées nécessaire : transformation de translation pour le positionnement d'origine, transformation de mise à l'échelle pour la réduction ou l'agrandissement de l'image, obtenez le point image de la courbe, et dessinez ce point. Prenons l'exemple de l'équation de courbe suivante :
Y = péché (x) + cos (x), x
Une partie du code de dessin peut s'écrire comme suit :
double x0,y0,x1,y1,x2,y2,scale;x0=100;y0=80;scale =20.0;for(x1=-3.1415926d;x1<=2*3.1415926d;x1+=0.01d){ y1 =Math.sin(x1)+Math.cos(x1); x2=x0+x1*scale;y2=y0+y1*scale;//(x2,y2) est le point image g.fillOval((int)x2,(int)y2,1,1);//Dessine un points de cercle comme points d'image}