Java 言語は Graphics クラスを拡張して、描画用のさまざまな基本的な幾何学的図形を提供することに基づいて Graphics2D クラスを提供します。これは、より強力な 2 次元グラフィックス処理機能を備え、座標変換、カラー管理、テキスト レイアウトなどを提供します。 。
描画プロパティ
ストローク属性は、線の幅、ペンのスタイル、線分の接続方法、または破線のパターンを制御します。このプロパティを設定するには、まず BasicStroke オブジェクトを作成し、次に setStroke() メソッドを呼び出して設定する必要があります。 BasicStroke オブジェクトを作成するメソッドは次のとおりです:
BasicStroke(float w): 線幅 w を指定します。
BasicStroke(float w, int cap, int join):
cap はエンドポイントです: CAP_BUTT (未変更)、CAP_ROUND (半円形の端)、CAP_SQUARE (正方形の端、デフォルト値)。
結合は、2 つの線分の交点での接続方法を定義します: JOIN_BEVEL (変更なし)、JOIN_MTTER (尖った端、デフォルト値)、JOIN_ROUND (丸い端)。
ペイント属性は塗りつぶし効果を制御します。まず、次のメソッドを呼び出して塗りつぶし効果を決定し、setPaint() メソッドを使用して設定します。
GradientPaint(float x1,float y1,Color c1,float x2,flaot y2,Color c2): (x1,y1) から (x2,y2) への c1 から c2 へのカラー グラデーション。その中で、パラメータ c1 と c2 は、色 c1 から色 c2 へのグラデーション色を決定します。パラメータ x1、y1、x2、y2 はグラデーションの強さを決定します。つまり、点 (x1、y1) から点 (x2、y2) に向かって色が c1 から c2 に変化します。
GradientPaint(float x1, float y1, Color c1, float x2, float y2, Color c2, Boolean cyclic): グラデーションを終了して開始点の色にしたい場合は、cyclic を true に設定する必要があります。
変換属性は、グラフィックスの変換、スケーリング、ベベルなどの一般的な変換操作を実装するために使用されます。まず AffineTransform オブジェクトを作成し、次に setTransform() メソッドを呼び出して変換属性を設定します。最後に、指定されたプロパティを持つ Graphics2D オブジェクトを使用してグラフィックスが描画されます。 AffineTransform オブジェクトを作成するメソッドは次のとおりです:
AffineTransform trans = new AffineTransform();
Trans.rotate(50.0*3.1415927/180.0,90,80);
Graphics2D g2d = (Graphics2D)g;g2d.setTranstorm(trans);
g2d.draw(curve)
クリップ属性は、クリッピング効果を実現するために使用されます。クリッピング属性を設定するには、setClip() メソッドを呼び出してクリッピング領域の形状を決定します。複数の setClip() 操作が連続して実行され、それらが交差するクリッピング領域が取得されます。
コンポジット属性は、グラフィックの重なり部分の効果を設定します。まず、AlphaComposite.getInstance(int rules, float alpha) メソッドを使用して AlphaComposite オブジェクトを取得し、次に setComposite() メソッドを通じて混合効果を設定します。アルファ値の範囲は 0.0f (完全に透明) から 0.1f (完全に不透明) です。
Graphics2D クラスの描画メソッド
Line2D 線分クラス、RoundRectangle2D 角丸長方形クラス、Ellipse2D 楕円クラス、Arc2D 円弧クラス、QuadCurve2D 二次曲線クラス、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);
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中文网!