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 la conversion de coordonnées, la gestion des couleurs et la mise en page du texte. . En attendant un contrôle plus précis.
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
L'attribut de trait contrôle la largeur de la ligne, le style du stylo, la façon dont les segments de ligne 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 pour créer un objet BasicStroke sont :
BasicStroke(float w) : Spécifiez la largeur de ligne w.
BasicStroke(float w, 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 droite : JOIN_BEVEL (aucune modification), JOIN_MTTER (extrémité pointue, valeur par défaut), JOIN_ROUND (extrémité arrondie).
2. Attribut paint
L'attribut 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), le 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é soit la couleur du point final et du point de départ, cyclique doit être défini sur vrai.
3. Attribut de transformation
L'attribut de transformation 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 :
getRotateinstrance(double theta) : faites pivoter les theta radians.
getRotateInstance(double theta,dioble x,double y) : Rotation autour du centre de rotation (x, y).
getScaleInstance(double sx,double sy) : Les directions x et y sont transformées en fonction de la proportion de sx et sy respectivement.
getTranslateInstance(double tx,double ty) : transformation de traduction.
getShearInstance(double shx,double shy) : transformation oblique, shx et shy précisent le degré oblique.
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 graphique, de rotation et de mise à l'échelle.
transelate(double dx,double dy) : Traduisez le graphique par pixels dx dans la direction de l'axe x.
scale(double sx,double sy) : Le graphique est mis à l'échelle sx fois dans la direction de l'axe x et sy fois verticalement.
rotate(double arc,double x, double y) : le graphique utilise le point (x, y) comme point d'axe et fait pivoter les radians de l'arc.
Par exemple, créez un objet AffineTransform :
AffineTransform trans = new AffineTransform();
Spécifiez l'attribut de transformation de rotation autour du point pour l'objet AffineTransform :
Trans.rotate(50.0*3.1415927/180.0,90,80);
Puis définissez l'objet g2d de Graphics2D avec la rotation ci-dessus Le "pinceau" de la fonction de transformation :
Graphics2D g2d = (Graphics2D)g;g2d.setTranstorm(trans);
Enfin, appelez la méthode draw() de l'objet Graphics2D avec la fonction de transformation en utilisant l'objet graphique comme 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 en utilisant l'objet g2d avec la fonction de rotation ci-dessus :
g2d.draw(curve)
4. 🎜 > L'attribut clip est utilisé pour obtenir un effet d'écrêtage. 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.
L'attribut de composition 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
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.
Graphics2D g2d = (Graphics2D)g;//将对象g类型从Graphics转换成Graphics2D Line2D line = new Line2D.Double(30.0,30.0,340.0,30.0); g2d.draw(line); RoundRectangle2D rRect = new RoundRectangle2D.Double(13.0,30.0,100.0,70.0,40.0,20.0); g2d.draw(rRect);
Shape arc = new Arc2D.Float(30,30,150,150,40,100,Arc2D.OPEN); g2d.draw(arc)//绘制前面创建的图形对象arc
Line2D line = new Line2D.Double(2,3,200,300);//声明并创建线段对象 //起点是(2,3),终点是(200,300)
矩形
Rectangle2D rect = new Rectangle2D.Double(20,30,80,40);//声明并创建矩形对象,矩形的左上角是(20,30),宽是300,高是40
圆角矩形
RoundRectangle2D rectRound = new RoundRectangle2D.Double(20,30,130,100,18,15); //左上角是(20,30),宽是130,高是100,圆角的长轴是18,短轴是15。
椭圆
Ellipse2D ellipse = new Ellipse2D.Double(20,30,100,50); //左上角 (20,30),宽是100,高是50
圆弧
Arc2D arc1 = new Arc2D.Double(8,30,85,60,5,90,Arc2D.OPEN); //外接矩形的左上角(10,30),宽85,高60,起始角是5度,终止角是90度 Arc2D arc2 = new Arc2D.Double(20,65,90,70,0,180,Arc2D.CHORD); Arc2D arc3 = new Arc2D.Double(40,110,50,90,0,270,Arc2D.PIE);
参数Arc2D.OPEN、Arc2D.CHORD、Arc2D.PIE分别表示圆弧是开弧、弓弧和饼弧。
二次曲线
二次曲线用二阶多项式表示:
y(x)=ax2+bx+c
一条二次曲线需要三个点确定:始点、控制点和终点。
QuadCurve2D curve1 = new QuadCurver2D.Double(20,10,90,65,55,115); QuadCurve2D curve2 = new QuadCurver2D.Double(20,10,15,63,55,115); QuadCurve2D curve3 = new QuadCurver2D.Double(20,10,54,64,55,115);
方法Double()中的6个参数分别是二次曲线的始点、控制点和终点。以上3条二次曲线的开始点和终点分别相同。
三次曲线
三次曲线用三阶多项式表示:
y(x)=ax3+bx2+cx+d
一条三次曲线需要四个点确定:始点、两个控制点和终点。
CubicCurve2D curve1 = new CubicCurve2D.Double(12,30,50,75,15,15,115,93); CubicCurve2D curve2 = new CubicCurve2D.Double(12,30,15,70,20,25,35,94); CubicCurve2D curve3 = new CubicCurve2D.Double(12,30,50,75,20,95,95,95);
方法Double()中的8个参数分别是三次曲线的始点、两个控制点和终点。
一般的方程曲线的绘制过程用一个循环控制。通过循环产生自变量的值,按照方程计算出函数值,再作必要的坐标转换:原点定位的平移变换,图像缩小或放大的缩放变换,得到曲线的图像点,并绘制这个点。以绘制以下曲线方程为例:
Y=sin(x)+cos(x),x
绘制的部分代码可以写成如下:
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)是图像点 g.fillOval((int)x2,(int)y2,1,1);//画一个圆点作为图像点 }
更多Java中的Graphics2D类基本使用教程相关文章请关注PHP中文网!