クラスGraphics2D
Graphics2Dクラスは、Graphicsクラスを拡張して、幾何学的図形、座標変換、色の管理、およびテキスト・レイアウトに対するより高度な制御を提供します。 このクラスは、Java(TM)プラットフォームで2Dの図形、テキスト、およびイメージを描画するための基本クラスです。
座標空間
Graphics2Dオブジェクトに渡されるすべての座標は、ユーザー空間(アプリケーションによって使用される)と呼ばれる、デバイスに依存しない座標系で指定されます。 Graphics2Dオブジェクトには、デバイス空間でユーザー空間の座標をデバイスに依存する座標に変換する方法を定義するAffineTransformオブジェクトが、描画状態の一部として格納されます。
デバイス空間の座標は、通常、個別のデバイス・ピクセルを示し、これらのピクセル間に無限に細い間隔に並べられています。 一部のGraphics2Dオブジェクトでは、描画操作を取り込むことができます。グラフィックス・メタファイルとして取り込むことで、後に物理的な解像度が不明な具象デバイスを使用して再生することができます。 レンダリング操作の取得時に解像度がわからない場合があるため、Graphics2D Transformは、ターゲット・デバイスの予想される解像度に近い仮想デバイス領域にユーザー座標を変換するように設定されています。 その見積もりが正しくない場合には、再生時にさらに変換を適用する必要があります。
描画属性オブジェクトによって実行される一部の操作にはデバイス空間で処理されるものもありますが、Graphics2Dのメソッドはすべてユーザー空間座標を扱います。
すべてのGraphics2Dオブジェクトは、描画の行われる位置を定義するターゲットと関連付けられています。 GraphicsConfigurationオブジェクトは、ピクセル形式および解像度といった描画ターゲットの特性を定義します。 Graphics2Dオブジェクトでは、その生存期間中常に同じ描画ターゲットが使用されます。
Graphics2Dオブジェクトが作成されるとき、GraphicsConfigurationは、Graphics2D (ComponentまたはImage)のターゲットとしてデフォルト変換を指定します。 このデフォルト変換では、ユーザー空間座標系を画面とプリンタのデバイス座標にマッピングして、原点をデバイスのターゲット領域の左上隅に、右方に拡張するにはX座標を、下方に拡張するにはY座標を増やすようなマッピングを行います。 スクリーン・デバイスなどの72 dpiに近いデバイスの場合、デフォルト変換のスケーリングはそれらのデバイスの識別情報に設定されます。 プリンタなどの高解像度デバイスの場合、デフォルト変換のスケーリングは、1平方インチあたり約72ユーザー空間座標に設定されます。 イメージ・バッファでは、デフォルトの変換はIdentity変換です。
描画プロセス
描画プロセスは、Graphics2D描画属性によって制御される4つの段階に分けることができます。 レンダリングではこうしたステップの多くを最適化できます。最適化は、将来の呼出しにそなえて結果をキャッシュに格納しておいたり、複数の仮想ステップを実質的に1つの操作にまとめたり、さまざまな属性に関する単純な共通の問題点を、操作のほかの部分を変更することにより排除したりすること、などによって行われます。
描画プロセスのステップを次に説明します。
- 描画する対象を指定する
-
描画操作を現在の
Clipに制限する。Clipはユーザー空間のShapeによって指定され、GraphicsおよびGraphics2Dのさまざまなクリップ操作メソッドを使ってプログラムによって制御されます。 このユーザー・クリップは、現在のTransformによってデバイス空間に変換され、ウィンドウの可視性およびデバイスの大きさによって定義されるデバイス・クリップと結合されます。 ユーザー・クリップとデバイス・クリップの組み合わせによって、最終的なクリッピング領域を決定する複合クリップが定義されます。 レンダリング・システムは、ユーザー・クリップを変更して複合クリップの結果を反映することはできません。 - 描画する色を指定する
-
Graphics2Dコンテキストの現在のComposite属性を使って、デスティネーションの描画表面に指定された色を塗る。
3種類の描画操作について、それぞれの描画プロセスの詳細を次に示します。
-
Shapeの操作-
draw(Shape)操作の場合は、Graphics2Dコンテキストの現在のStroke属性でcreateStrokedShapeメソッドを使用して、指定のShapeの輪郭を格納する新しいShapeオブジェクトが構築されます。 -
Shapeは、Graphics2Dコンテキストの現在のTransformを使ってユーザー空間からデバイス空間に変換されます。 -
Shapeの輪郭は、ShapeのgetPathIteratorメソッドを使って抽出されます。このメソッドは、Shapeの境界に沿って反復処理を行うPathIteratorオブジェクトを返します。 -
PathIteratorオブジェクトによって返される曲線セグメントをGraphics2Dオブジェクトが処理できない場合は、Shapeの平坦化を行うShapeの代替メソッドgetPathIteratorを呼び出すことができます。 -
Graphics2Dコンテキストの現在のPaintが、デバイス空間で描画する色を指定するPaintContextを取得するために照会されます。
-
-
テキストの操作
-
指定された
Stringを描画するために必要なグリフのセットは、次のステップで指定されます。-
引数が
Stringの場合、フォントが実装する基本レイアウトおよび形状決定アルゴリズムに関係なくそれらを用いて表示するために、Graphics2Dコンテキストの現在のFontはStringのUnicode文字列をグリフのセットに変換するように要求されます。 -
引数が
AttributedCharacterIteratorの場合、イテレータは、埋込みフォント属性を使って、それ自体をTextLayoutに変換するように要求されます。TextLayoutは、書込み方向が異なる複数のフォントのために自動的にUnicodeの双方向レイアウト調整を実行する、より高性能なグリフ・レイアウト・アルゴリズムを実装できます。 -
引数が
GlyphVectorの場合、GlyphVectorオブジェクトは、各グリフの位置を示す明示的な座標を持つフォント独自の適切なグリフ・コードをすでに格納しています。
-
引数が
-
現在の
Fontを照会すると、指定されたグリフのアウトラインを取得できます。 これらのアウトラインは、ステップ1で指定された各グリフの位置を基準にしたユーザー空間の形状として処理されます。 -
文字のアウトラインが、「
Shapeの操作」で説明したように塗りつぶされます。 -
現在の
Paintが、デバイス空間で描画する色を指定するPaintContextを取得するために照会されます。
-
指定された
-
Imageの操作-
対象となる領域は、ソース
Imageのバウンディング・ボックスで定義されます。 このバウンディング・ボックスは、Imageオブジェクトのローカルな座標系であるイメージ空間で指定されます。 -
AffineTransformがdrawImage(Image, AffineTransform, ImageObserver)に渡される場合は、イメージ空間からユーザー空間にバウンディング・ボックスを変換するために、そのAffineTransformが使われます。AffineTransformが指定されない場合、バウンディング・ボックスはすでにユーザー空間にあるものとして扱われます。 -
ソース
Imageのバウンディング・ボックスは、現在のTransformを使ってユーザー空間からデバイス空間に変換されます。 ただし、バウンディング・ボックスを変換した結果が、デバイス空間で矩形領域となるとは限りません。 -
Imageオブジェクトは描画する色を指定します。色は、現在のTransformとオプションのイメージ変換によって指定されたソースからデスティネーションへのマッピングに従ってサンプリングされます。
-
対象となる領域は、ソース
デフォルトの描画属性
Graphics2D描画属性のデフォルト値を次に示します。
PaintComponentの色。FontComponentのFont。Stroke- 線幅1、破線なし、マイター・セグメント結合、および角エンド・キャップを持つ角ペン
TransformComponentのGraphicsConfiguration用のgetDefaultTransform。CompositeAlphaComposite.SRC_OVERルール。Clip- 描画
Clipなし、出力はComponentにクリップされる。
描画互換性
JDK(tm) 1.1描画モデルは、座標がピクセル間の無限に細い間隔に存在するというピクセル化モデルに基づきます。 描画操作は、輪郭線上のアンカー・ポイントの右および下のピクセルを塗りつぶす1ピクセル幅のペンを使って行われます。 JDK 1.1描画モデルは、指定された番号のピクセルにきっちりと収まらなければならない離散ペンに整数座標を変換する必要がある、プラットフォーム・レンダリングの大半の既存クラスの機能に準拠しています。
Java 2D(TM)(Java(TM) 2プラットフォーム) APIは、平滑化レンダリングをサポートしています。 1ピクセル幅のペンは、ピクセルN+1と対比したピクセルNに完全に収まる必要はありません。 ペンは、部分的に両方のピクセルにかかることができます。 移動しているペンの縁が両方のピクセルにかかると、ペンのサブピクセル位置がユーザーに表示されるため、幅広ペンのバイアス方向を選択する必要はありません。 一方、KEY_ANTIALIASINGヒント・キーをVALUE_ANTIALIAS_OFFヒント値に設定することによって平滑化を無効にした場合は、デバイス空間で整数座標に沿って描画しているときなど、ペンがピクセル境界を越えようとしているときにどちらのピクセルを修正するか判断するために、レンダリングはバイアスを適用する必要があります。 平滑化レンダリングの機能により、描画モデルはペンのバイアスを指定する必要性がなくなりましたが、画面上で1ピクセル幅の水平線および垂直線を描画する共通のケースでは、平滑化レンダリングと非平滑化レンダリングは同じように動作する必要があります。 KEY_ANTIALIASINGヒント・キーをVALUE_ANTIALIAS_ONに設定して平滑化を有効にしたために、この線幅が突然2倍になり不透明度が半分になることを防ぐには、そのような線の輪郭線をモデルで指定することによって、その線が特定のピクセルのセットを完全にカバーして輪郭が鮮明になるようにします。
Java 2D APIはJDK 1.1の描画動作との互換性を維持しており、Java 2D APIでは従来からの操作や既存のレンダリングの動作に変更はありません。 一般的なdrawメソッドおよびfillメソッドにマッピングされる従来のメソッドが定義されているため、Stroke属性とTransform属性の設定および描画ヒントに基づいてGraphics2DがGraphicsをどのように拡張しているかが明確に示されています。 その定義は、デフォルトの属性設定では同じように実行されます。 たとえば、デフォルトのStrokeは、幅1および破線なしのBasicStrokeであり、画面描画のデフォルトのTransformは恒等変換です。
次の2つのルールは、アンチエイリアスまたは非アンチエイリアスのどちらが使用されていても、予測可能な描画動作を提供します。
- デバイス・ピクセル間にデバイス座標が定義され、それによりエイリアス描画とアンチエイリアス描画の間で一貫性のある結果が得られます。 座標がピクセルの中心にあるように定義された場合、矩形などの形状によってカバーされる一部のピクセルは半分だけしかカバーされません。 非アンチエイリアスの描画の場合、半分カバーされたピクセルは形状の内側か外側のどちらかが描画されます。 アンチエイリアスの描画では、形状のエッジ全体にあるピクセルが半分だけカバーされます。 しかし、ピクセルの間に座標が定義されていれば、矩形などの形状は、アンチエイリアスを使って描画されるどうかに関係なく、半分だけカバーされたピクセルを持つことはありません。
-
BasicStrokeオブジェクトを使ってストロークした線および図形の輪郭を「正規化」することで、描画可能なさまざまな位置で非アンチエイリアス描画またはアンチエイリアス描画するときに、一貫性のある輪郭を描画することができます。 この正規化プロセスはKEY_STROKE_CONTROLヒントによって制御されます。 正確な正規化アルゴリズムは指定されませんが、この正規化の目標は、ピクセル・グリッドに線がどのように収まるかに関わらず、視覚的に一貫性のある線を描画できるようにすること、およびアンチエイリアス・モードでの水平線および垂直線をより緻密にして、アンチエイリアスされていない場合の線になるべく近づけることです。 通常の正規化のステップでは、浮動小数点の線幅が同等の可能性で偶数または奇数のピクセル数に四捨五入できるように、アンチエイリアスされた線の終端をよりピクセルの中心にして重なる量を減らすか、あるいはアンチエイリアスされていない線のサブピクセルの位置決めを調整します。 このプロセスでは、終端をピクセルの半分まで移動して(通常は両軸に沿って正の無限大方向)、これらの結果の一貫性を高めることができます。
次に示す一般的な従来のメソッドの定義は、デフォルト属性設定では以前に指定された動作と同じように実行されます。
-
fillRect、fillRoundRect、fillOval、fillArc、fillPolygon、clearRectなどのfill操作の場合は、目的のShapeを指定してfillを呼び出すことができます。 たとえば矩形を塗りつぶす場合は、fill(new Rectangle(x, y, w, h));
を呼び出します。 -
同じように、
drawLine、drawRect、drawRoundRect、drawOval、drawArc、drawPolyline、drawPolygonなどの描画操作の場合は、目的のShapeを指定してdrawを呼び出すことができます。 たとえば矩形を描画する場合は、draw(new Rectangle(x, y, w, h));
を呼び出します。 -
draw3DRectメソッドとfill3DRectメソッドは、GraphicsクラスではdrawLineメソッドとfillRectメソッドを使って実装されています。これらの動作は、Graphics2Dコンテキストの現在のStrokeオブジェクトとPaintオブジェクトに基づいて予測できます。 このクラスは、現在のPaintをオーバーライドし、これらの2つのオブジェクトの実装を現在のColorを排他的に使うバージョンでオーバーライドします。このクラスは、既存のメソッドと完全に等しい動作を記述するために、Strokeの現在の設定とは無関係にfillRectを使用します。
Graphicsクラスは、ペイントされる色を制御するためにsetColorメソッドだけを定義します。 Java 2D APIは、Colorオブジェクトを拡張して新しいPaintインタフェースを実装するので、既存のsetColorメソッドは現在のPaint属性をColorオブジェクトに設定するための簡易メソッドになっています。setColor(c)はsetPaint(c)に相当します。
Graphicsクラスは、色をデスティネーションに適用する方法を制御するために2つのメソッドを定義します。
-
setPaintModeメソッドは、setComposite(new AlphaComposite.SrcOver)に相当するデフォルトのCompositeを設定する簡易メソッドとして実装されます。 -
setXORMode(Color xorcolor)メソッドは、ソース・カラーのAlpha成分を無視し、デスティネーション・カラーをその値に設定する特殊なCompositeオブジェクトを設定するための簡易メソッドとして実装されます。dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明abstract voidaddRenderingHints(Map<?, ?> hints) 描画アルゴリズムに関する任意の数の推奨設定の値を設定します。abstract void現在のClipを指定されたShapeの内部と交差させ、そのClipを結果として得られる共通部分に設定します。abstract void現在のGraphics2Dコンテキストの設定を使用して、Shapeの輪郭をストロークで描画します。voiddraw3DRect(int x, int y, int width, int height, boolean raised) 指定された矩形の輪郭を3Dで強調表示して描画します。abstract voiddrawGlyphVector(GlyphVector g, float x, float y) Graphics2Dコンテキストの描画属性を使用して、指定されたGlyphVectorのテキストを描画します。abstract voiddrawImage(BufferedImage img, BufferedImageOp op, int x, int y) BufferedImageOpでフィルタ処理されるBufferedImageをレンダリングします。abstract booleandrawImage(Image img, AffineTransform xform, ImageObserver obs) イメージ空間からユーザー空間への変換を適用してから、イメージを描画します。abstract voiddrawRenderableImage(RenderableImage img, AffineTransform xform) レンダリングの前にイメージ空間からユーザー空間への変換を適用して、RenderableImageを描画します。abstract voiddrawRenderedImage(RenderedImage img, AffineTransform xform) レンダリングの前にイメージ空間からユーザー空間への変換を適用して、RenderedImageをレンダリングします。abstract voiddrawString(String str, float x, float y) Graphics2Dコンテキスト内の現在のテキスト属性状態を使用して、指定されたStringによって指定されたテキストを描画します。abstract voiddrawString(String str, int x, int y) Graphics2Dコンテキスト内の現在のテキスト属性状態を使用して、指定されたStringのテキストを描画します。abstract voiddrawString(AttributedCharacterIterator iterator, float x, float y) 指定されたイテレータのテキストを、その属性をTextAttributeクラスの仕様に従って適用しながら描画します。abstract voiddrawString(AttributedCharacterIterator iterator, int x, int y) 指定されたイテレータのテキストを、その属性をTextAttributeクラスの仕様に従って適用しながら描画します。abstract voidGraphics2Dコンテキストの設定を使用して、Shapeの内部を塗りつぶします。voidfill3DRect(int x, int y, int width, int height, boolean raised) 現在の色で塗りつぶされている、3Dで強調表示された矩形をペイントします。abstract Color領域をクリアするのに使うバックグラウンド・カラーを返します。abstract CompositeGraphics2Dコンテキスト内の現在のCompositeを返します。abstract GraphicsConfigurationこのGraphics2Dに関連付けられたデバイス構成を返します。abstract FontRenderContextこのGraphics2Dコンテキスト内のFontの描画コンテキストを取得します。abstract PaintgetPaint()Graphics2Dコンテキストの現在のPaintを返します。abstract ObjectgetRenderingHint(RenderingHints.Key hintKey) 描画アルゴリズムの推奨設定の値を1つ返します。abstract RenderingHintsレンダリング・アルゴリズムの推奨設定を取得します。abstract StrokeGraphics2Dコンテキスト内の現在のStrokeを返します。abstract AffineTransformGraphics2Dコンテキスト内の現在のTransformのコピーを返します。abstract boolean指定されたShapeが、デバイス空間内にある指定されたRectangleと交差しているかどうかをチェックします。abstract voidrotate(double theta) 現在のGraphics2DTransformを回転変換に連結します。abstract voidrotate(double theta, double x, double y) 現在のGraphics2DTransformを平行移動された回転変換に連結します。abstract voidscale(double sx, double sy) 現在のGraphics2DTransformをスケーリング変換に連結します。以降の描画は、以前のスケーリングを基準に指定されたスケーリング係数に従ってサイズ変更されます。abstract voidsetBackground(Color color) Graphics2Dコンテキストの背景色を設定します。abstract voidsetComposite(Composite comp) Graphics2DコンテキストのCompositeを設定します。abstract voidGraphics2DコンテキストのPaint属性を設定します。abstract voidsetRenderingHint(RenderingHints.Key hintKey, Object hintValue) 描画アルゴリズムの推奨設定の値を1つ設定します。abstract voidsetRenderingHints(Map<?, ?> hints) 描画アルゴリズムのすべての推奨設定の値を指定されたhintsに置き換えます。abstract voidGraphics2DコンテキストのStrokeを設定します。abstract voidGraphics2Dコンテキスト内のTransformを上書きします。abstract voidshear(double shx, double shy) 現在のGraphics2DTransformをシャーリング変換に連結します。abstract void後指定優先適用のルールに従って、このGraphics2D内のTransformを使用してAffineTransformオブジェクトを構成します。abstract voidtranslate(double tx, double ty) 現在のGraphics2D Transformを変換変換で連結します。abstract voidtranslate(int x, int y) Graphics2Dコンテキストの原点を現在の座標系内の点(x, y)に平行移動します。クラスjava.awt.Graphicsで宣言されたメソッド
clearRect, clipRect, copyArea, create, create, dispose, drawArc, drawBytes, drawChars, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolygon, drawPolyline, drawRect, drawRoundRect, fillArc, fillOval, fillPolygon, fillPolygon, fillRect, fillRoundRect, finalize, getClip, getClipBounds, getClipBounds, getClipRect, getColor, getFont, getFontMetrics, getFontMetrics, hitClip, setClip, setClip, setColor, setFont, setPaintMode, setXORMode, toString
-
コンストラクタの詳細
-
Graphics2D
protected Graphics2D()新しいGraphics2Dオブジェクトを構築します。Graphics2Dは抽象クラスであり、さまざまな出力デバイスのためにサブクラスでカスタマイズされなければならないため、Graphics2Dオブジェクトを直接作成することはできません。 代わりに、Graphics2Dオブジェクトは、ほかのGraphics2Dオブジェクトから取得するか、Componentによって作成するか、あるいはBufferedImageオブジェクトなどのイメージから取得しなければいけません。- 関連項目:
-
-
メソッドの詳細
-
draw3DRect
public void draw3DRect(int x, int y, int width, int height, boolean raised) 指定された矩形の輪郭を3Dで強調表示して描画します。 矩形の端は、傾斜し、左上隅から光を当てたように強調表示されます。強調表示効果に使われる色は、現在の色に基づいて指定されます。 結果として得られる矩形は、幅が
width + 1ピクセル、高さがheight + 1ピクセルの領域をカバーします。 このメソッドは現在のColorのみを使用し、現在のPaintを無視します。- オーバーライド:
draw3DRect、クラスGraphics- パラメータ:
x- 描画される矩形のx座標。y- 描画される矩形のy座標。width- 描画される矩形の幅。height- 描画される矩形の高さ。raised- 矩形が表面から浮き出たように見えるか、または表面がへこんだように見えるかを決定するboolean値。- 関連項目:
-
fill3DRect
public void fill3DRect(int x, int y, int width, int height, boolean raised) 現在の色で塗りつぶされている、3Dで強調表示された矩形をペイントします。 矩形の端は、傾斜し、左上隅から光を当てたように強調表示されます。 強調表示効果および塗りつぶしに使われる色は、現在のColorによって指定されます。 このメソッドは現在のColorのみを使用し、現在のPaintを無視します。- オーバーライド:
fill3DRect、クラスGraphics- パラメータ:
x- 塗りつぶされる矩形のx座標。y- 塗りつぶされる矩形のy座標。width- 塗りつぶされる矩形の幅。height- 塗りつぶされる矩形の高さ。raised- 矩形が表面から浮き出たように見えるか、または表面に彫り込まれたように見えるかを決定するboolean値。- 関連項目:
-
draw
public abstract void draw(Shape s) 現在のGraphics2Dコンテキストの設定を使用して、Shapeの輪郭をストロークで描画します。 適用される描画属性には、Clip、Transform、Paint、Composite、およびStroke属性が含まれます。- パラメータ:
s- 描画されるShape- 関連項目:
-
drawImage
public abstract boolean drawImage(Image img, AffineTransform xform, ImageObserver obs) イメージ空間からユーザー空間への変換を適用してから、イメージを描画します。 ユーザー空間からデバイス空間への変換は、Graphics2D内の現在のTransformで実行されます。 指定された変換は、Graphics2Dコンテキスト内の変換属性が適用される前にイメージに適用されます。 適用される描画属性には、Clip、Transform、およびComposite属性が含まれます。 ただし、指定された変換が逆変換を持たない場合、描画は行われません。- パラメータ:
img- 描画される指定イメージ。imgがnullである場合、このメソッドは何も行いません。xform- イメージ空間からユーザー空間への変換obs-Imageのより多くの部分が変換されると通知されるImageObserver。- 戻り値:
Imageがすべてロードされ、完全に描画された場合、またはnullの場合はtrue、Imageがまだロード中の場合はfalse。- 関連項目:
-
drawImage
public abstract void drawImage(BufferedImage img, BufferedImageOp op, int x, int y) BufferedImageOpでフィルタ処理されるBufferedImageをレンダリングします。 適用される描画属性には、Clip、Transform、およびComposite属性が含まれます。 これは、次の操作に相当します。img1 = op.filter(img, null); drawImage(img1, new AffineTransform(1f,0f,0f,1f,x,y), null);
- パラメータ:
img- 描画される指定BufferedImage。imgがnullである場合、このメソッドは何も行いません。op- 描画前にイメージに適用されるフィルタx- イメージの左上隅が描画されるユーザー空間の位置のx座標y- イメージの左上隅が描画されるユーザー空間の位置のy座標- 関連項目:
-
drawRenderedImage
public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform) レンダリングの前にイメージ空間からユーザー空間への変換を適用して、RenderedImageをレンダリングします。 ユーザー空間からデバイス空間への変換は、Graphics2D内の現在のTransformで実行されます。 指定された変換は、Graphics2Dコンテキスト内の変換属性が適用される前にイメージに適用されます。 適用される描画属性には、Clip、Transform、およびComposite属性が含まれます。 ただし、指定された変換が逆変換を持たない場合、描画は行われません。- パラメータ:
img- 描画されるイメージ。imgがnullである場合、このメソッドは何も行いません。xform- イメージ空間からユーザー空間への変換- 関連項目:
-
drawRenderableImage
public abstract void drawRenderableImage(RenderableImage img, AffineTransform xform) レンダリングの前にイメージ空間からユーザー空間への変換を適用して、RenderableImageを描画します。 ユーザー空間からデバイス空間への変換は、Graphics2D内の現在のTransformで実行されます。 指定された変換は、Graphics2Dコンテキスト内の変換属性が適用される前にイメージに適用されます。 適用される描画属性には、Clip、Transform、およびComposite属性が含まれます。 ただし、指定された変換が逆変換を持たない場合、描画は行われません。Graphics2Dオブジェクトに設定された描画ヒントは、RenderableImageの描画に使用できます。 特定のRenderableImageによって認識された特定のヒントに明示的な制御が必要な場合や、どのヒントが使用されるかを知っておく必要がある場合には、RenderedImageをRenderableImageから直接取得し、drawRenderedImageを使って描画する必要があります。- パラメータ:
img- 描画されるイメージ。imgがnullである場合、このメソッドは何も行いません。xform- イメージ空間からユーザー空間への変換- 関連項目:
-
drawString
public abstract void drawString(String str, int x, int y) Graphics2Dコンテキスト内の現在のテキスト属性状態を使用して、指定されたStringのテキストを描画します。 最初の文字のベースラインは、ユーザー空間内の位置(x, y)にあります。 適用される描画属性には、Clip、Transform、Paint、Font、およびComposite属性が含まれます。 ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。- 定義:
drawString、クラスGraphics- パラメータ:
str- 描画される文字列x-Stringが描画される位置のx座標y-Stringが描画される位置のy座標- スロー:
NullPointerException-strがnullの場合- 導入されたバージョン:
- 1.0
- 関連項目:
-
drawString
public abstract void drawString(String str, float x, float y) Graphics2Dコンテキスト内の現在のテキスト属性状態を使用して、指定されたStringによって指定されたテキストを描画します。 最初の文字のベースラインは、ユーザー空間内の位置(x, y)にあります。 適用される描画属性には、Clip、Transform、Paint、Font、およびComposite属性が含まれます。 ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。- パラメータ:
str- 描画されるStringx-Stringが描画される位置のx座標y-Stringが描画される位置のy座標- スロー:
NullPointerException-strがnullの場合- 関連項目:
-
drawString
public abstract void drawString(AttributedCharacterIterator iterator, int x, int y) 指定されたイテレータのテキストを、その属性をTextAttributeクラスの仕様に従って適用しながら描画します。最初の文字のベースラインは、ユーザー空間内の位置(x, y)にあります。 ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。
- 定義:
drawString、クラスGraphics- パラメータ:
iterator- テキストが描画されるイテレータx- イテレータのテキストが描画されるx座標y- イテレータのテキストが描画されるy座標- スロー:
NullPointerException-iteratorがnullの場合- 関連項目:
-
drawString
public abstract void drawString(AttributedCharacterIterator iterator, float x, float y) 指定されたイテレータのテキストを、その属性をTextAttributeクラスの仕様に従って適用しながら描画します。最初の文字のベースラインは、ユーザー空間内の位置(x, y)にあります。 ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。
- パラメータ:
iterator- テキストが描画されるイテレータx- イテレータのテキストが描画されるx座標y- イテレータのテキストが描画されるy座標- スロー:
NullPointerException-iteratorがnullの場合- 関連項目:
-
drawGlyphVector
public abstract void drawGlyphVector(GlyphVector g, float x, float y) Graphics2Dコンテキストの描画属性を使用して、指定されたGlyphVectorのテキストを描画します。 適用される描画属性には、Clip、Transform、Paint、およびComposite属性が含まれます。GlyphVectorは、個々のグリフをFontから指定します。 また、GlyphVectorは、グリフの位置も格納できます。 このメソッドを使うと、画面に一連の文字列をもっとも速く描画できます。- パラメータ:
g- 描画されるGlyphVectorx- グリフが描画されるユーザー空間のx位置y- グリフが描画されるユーザー空間のy位置- スロー:
NullPointerException-gがnullの場合。- 関連項目:
-
fill
public abstract void fill(Shape s) Graphics2Dコンテキストの設定を使用して、Shapeの内部を塗りつぶします。 適用される描画属性には、Clip、Transform、Paint、およびCompositeが含まれます。- パラメータ:
s- 塗りつぶされるShape- 関連項目:
-
hit
指定されたShapeが、デバイス空間内にある指定されたRectangleと交差しているかどうかをチェックします。onStrokeがfalseの場合、このメソッドは指定されたShapeの内部が指定されたRectangleと交差するかどうかを調べます。onStrokeがtrueの場合、このメソッドは指定されたShapeの輪郭のStrokeが指定されたRectangleと交差するかどうかを調べます。 考慮される描画属性には、Clip、Transform、およびStrokeの各属性があります。- パラメータ:
rect- ヒットを調べるデバイス空間の領域s- ヒットを調べるShapeonStroke- ストロークで描画された形状を調べるか塗りつぶされた形状を調べるかを選択するフラグ。 フラグがtrueの場合は、Strokeの輪郭が調べられる。 フラグがfalseの場合は、塗りつぶされたShapeが調べられる。- 戻り値:
- ヒットがある場合は
true、そうでない場合はfalse。 - 関連項目:
-
getDeviceConfiguration
public abstract GraphicsConfiguration getDeviceConfiguration()このGraphics2Dに関連付けられたデバイス構成を返します。- 戻り値:
- この
Graphics2Dのデバイス構成。
-
setComposite
public abstract void setComposite(Composite comp) Graphics2DコンテキストのCompositeを設定します。Compositeは、drawImage、drawString、draw、fillなどのすべての描画メソッドで使用されます。 これは、グラフィックス・デバイスでの描画処理中に新しいピクセルが既存のピクセルとどのように結合されるかを指定します。- パラメータ:
comp- 描画に使われるCompositeオブジェクト- 関連項目:
-
setPaint
public abstract void setPaint(Paint paint) Graphics2DコンテキストのPaint属性を設定します。null Paintオブジェクトを使用してこのメソッドをコールしても、このGraphics2Dの現在のPaint属性には影響しません。- パラメータ:
paint- 描画プロセスで色を生成するために使われるPaintオブジェクト、またはnull- 関連項目:
-
setStroke
public abstract void setStroke(Stroke s) Graphics2DコンテキストのStrokeを設定します。- パラメータ:
s- 描画プロセスでShapeをストロークで描画するために使われるStrokeオブジェクト- 関連項目:
-
setRenderingHint
public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue) 描画アルゴリズムの推奨設定の値を1つ設定します。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。- パラメータ:
hintKey- 設定されるヒントのキー。hintValue- 指定されたヒント・カテゴリの推奨設定を示す値。- 関連項目:
-
getRenderingHint
public abstract Object getRenderingHint(RenderingHints.Key hintKey) 描画アルゴリズムの推奨設定の値を1つ返します。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。- パラメータ:
hintKey- 取得するヒントに対応するキー。- 戻り値:
- 指定されたヒント・キーの値を表すオブジェクト。 いくつかのキーとそのキーに関連した値は
RenderingHintsクラスで定義されている。 - 関連項目:
-
setRenderingHints
-
addRenderingHints
public abstract void addRenderingHints(Map<?, ?> hints) 描画アルゴリズムに関する任意の数の推奨設定の値を設定します。 指定されたMapオブジェクトにある描画ヒントの値だけが変更されます。 指定されたオブジェクトにない推奨設定は変更されません。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。- パラメータ:
hints- 設定される描画ヒント- 関連項目:
-
getRenderingHints
public abstract RenderingHints getRenderingHints()レンダリング・アルゴリズムの推奨設定を取得します。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 1回のオペレーションで指定されたすべてのヒント・キーと値のペアを返します。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。- 戻り値:
- 現在の推奨設定を格納している
RenderingHintsのインスタンスへの参照。 - 関連項目:
-
translate
-
translate
public abstract void translate(double tx, double ty) 現在のGraphics2D Transformを変換変換で連結します。 以降の描画は、以前の位置を基準に指定された距離で移動します。 これは、transform(T)を呼び出すことに相当します。ただし、Tは次の行列によって表現されるAffineTransformです。[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]- パラメータ:
tx- x軸に沿って移動する距離ty- y軸に沿って移動する距離
-
rotate
public abstract void rotate(double theta) 現在のGraphics2DTransformを回転変換に連結します。 以降の描画は、以前の原点を基準に指定されたラジアンで回転します。 これは、transform(R)を呼び出すことに相当します。ただし、Rは次の行列によって表現されるAffineTransformです。[ cos(theta) -sin(theta) 0 ] [ sin(theta) cos(theta) 0 ] [ 0 0 1 ]正の角度thetaで回転すると、正のx軸の点が正のy軸に向かって回転されます。- パラメータ:
theta- 回転の角度(ラジアン)
-
rotate
public abstract void rotate(double theta, double x, double y) 現在のGraphics2DTransformを平行移動された回転変換に連結します。 以降の描画は、指定された位置に移動し、指定されたラジアンで回転し、元の平行移動と同じ量で平行移動し直すことで作成される変換によって変換されます。 これは、次の呼出しシーケンスに相当します。translate(x, y); rotate(theta); translate(-x, -y);正の角度thetaで回転すると、正のx軸の点が正のy軸に向かって回転されます。- パラメータ:
theta- 回転の角度(ラジアン)x-回転の原点のx座標y- 回転の原点のy座標
-
scale
public abstract void scale(double sx, double sy) 現在のGraphics2DTransformをスケーリング変換に連結します。以降の描画は、以前のスケーリングを基準に指定されたスケーリング係数に従ってサイズ変更されます。 これは、transform(S)を呼び出すことに相当します。ただし、Sは次の行列によって表現されるAffineTransformです。[ sx 0 0 ] [ 0 sy 0 ] [ 0 0 1 ]- パラメータ:
sx- 以降の描画操作のX座標が以前の描画操作を基準に乗算される量。sy- 以降の描画操作のY座標が以前の描画操作を基準に乗算される量。
-
shear
public abstract void shear(double shx, double shy) 現在のGraphics2DTransformをシャーリング変換に連結します。 以降の描画は、以前の位置を基準に指定された乗数でシャーリングされます。 これは、transform(SH)を呼び出すことに相当します。ただし、SHは次の行列によって表現されるAffineTransformです。[ 1 shx 0 ] [ shy 1 0 ] [ 0 0 1 ]- パラメータ:
shx- Y座標の関数として、座標を正のX軸方向にシフトするための乗数shy- X座標の関数として、座標を正のY軸方向にシフトするための乗数
-
transform
public abstract void transform(AffineTransform Tx) 後指定優先適用のルールに従って、このGraphics2D内のTransformを使用してAffineTransformオブジェクトを構成します。 現在のTransformがCxである場合、Txによる変換の結果は新しいTransformCx'になります。 Cx'は、このGraphics2D用の現在のTransformになります。 更新されたTransformCx'で点pを変換することは、最初にTxでpを変換してから、その結果を元のTransformCxで変換することに相当します。 つまり、Cx'(p)= Cx(Tx(p))です。 必要に応じてTxのコピーを行うと、Txをそれ以上修正しても描画に影響しません。- パラメータ:
Tx- 現在のTransformで変換されるAffineTransformオブジェクト- 関連項目:
-
setTransform
public abstract void setTransform(AffineTransform Tx) Graphics2Dコンテキスト内のTransformを上書きします。 警告:このメソッドは新しい座標変換を既存の変換上で適用する目的では決して使用しないでください。これは、Graphics2Dには、Swingコンポーネントの描画またはプリンタの解像度を調整するためのスケーリング変換の適用など、ほかの目的のために必要な変換がすでに含まれていることがあるからです。座標変換を追加するには、
transform、rotate、scale、またはshearメソッドを使用します。setTransformメソッドは、この例で示されているとおり、描画終了後に元のGraphics2D変換を復元するためだけに使用されます。// Get the current transform AffineTransform saveAT = g2.getTransform(); // Perform transformation g2d.transform(...); // Render g2d.draw(...); // Restore original transform g2d.setTransform(saveAT);
- パラメータ:
Tx-getTransformメソッドから取得されたAffineTransform- 関連項目:
-
getTransform
public abstract AffineTransform getTransform()Graphics2Dコンテキスト内の現在のTransformのコピーを返します。- 戻り値:
Graphics2Dコンテキスト内の現在のAffineTransform。- 関連項目:
-
getPaint
public abstract Paint getPaint()Graphics2Dコンテキストの現在のPaintを返します。- 戻り値:
- カラーまたはパターンを定義する現在の
Graphics2D Paint。 - 関連項目:
-
getComposite
public abstract Composite getComposite()Graphics2Dコンテキスト内の現在のCompositeを返します。- 戻り値:
- 現在の
Graphics2D Compositeは、合成スタイルを定義します。 - 関連項目:
-
setBackground
public abstract void setBackground(Color color) Graphics2Dコンテキストの背景色を設定します。 バックグラウンド・カラーは、領域をクリアするために使われます。Graphics2DをComponent用に作成すると、バックグラウンド・カラーがComponentから継承されます。Graphics2Dコンテキストでのバックグラウンド・カラーを設定しても、それ以降のclearRect呼出しに作用するだけで、Componentのバックグラウンド・カラーには影響を及ぼしません。Componentのバックグラウンドを変更するには、Componentの適切なメソッドを使用します。- パラメータ:
color- 以降のclearRectの呼出しで使用されるバックグラウンド・カラー- 関連項目:
-
getBackground
public abstract Color getBackground()領域をクリアするのに使うバックグラウンド・カラーを返します。- 戻り値:
- 現在の
Graphics2D Colorは、バックグラウンド色を定義します。 - 関連項目:
-
getStroke
public abstract Stroke getStroke()Graphics2Dコンテキスト内の現在のStrokeを返します。- 戻り値:
- 現在の
Graphics2D Strokeは、線スタイルを定義します。 - 関連項目:
-
clip
public abstract void clip(Shape s) 現在のClipを指定されたShapeの内部と交差させ、そのClipを結果として得られる共通部分に設定します。 指定されたShapeは、現在のClipと交差する前に、現在のGraphics2DTransformを使って変換されます。 このメソッドを使うと、現在のClipを小さくできます。Clipを大きくするには、setClipメソッドを使います。このメソッドによって変更されたユーザー・クリップは、デバイスの境界および可視性と関連したクリッピングとは無関係です。 これまでに設定されているクリップがない場合、または
setClipにnull引数を使ってクリップがクリアされている場合は、指定されたShapeが新しいユーザー・クリップになります。このメソッドは、指定されたシェイプと現在のクリップが交差するため、ユーザー・クリップも
nullでないかぎり、nullシェイプに対してNullPointerExceptionをスローします。 このため、null引数を指定してこのメソッドを呼び出すことはお薦めしません。- パラメータ:
s- 現在のClipと交差するShape。 このメソッドは現在のClipを更新します。- スロー:
NullPointerException-sがnullで、ユーザー・クリップが現在設定されている場合。
-
getFontRenderContext
public abstract FontRenderContext getFontRenderContext()このGraphics2Dコンテキスト内のFontのレンダリング・コンテキストを取得します。FontRenderContextは、アンチエイリアスや部分メトリックスなどのアプリケーション・ヒントのほか、ターゲット・デバイスに特有の解像度(dpi)などの情報をカプセル化します。 こうした情報は、FontやTextLayoutなどの文字体裁のフォーマットを実行するオブジェクトの使用時にアプリケーションによって提供されます。 この情報はまた、各種描画ヒントがテキスト描画に適用されたときに、それ自体のレイアウトを実行し、有効幅や行の高さなど、グリフの各種特性の正確な計測を必要とするアプリケーションによって提供されなければいけません。- 戻り値:
- FontRenderContextのインスタンスへの参照
- 導入されたバージョン:
- 1.2
- 関連項目:
-