モジュール java.desktop
パッケージ java.awt

クラスGraphics2D


  • public abstract class Graphics2D
    extends Graphics
    この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つの操作にまとめたり、さまざまな属性に関する単純な共通の問題点を、操作のほかの部分を変更することにより排除したりすること、などによって行われます。

    描画プロセスのステップを次に説明します。

    1. 描画する対象を指定する
    2. 描画操作を現在のClipに制限する。 Clipはユーザー空間のShapeによって指定され、GraphicsおよびGraphics2Dのさまざまなクリップ操作メソッドを使ってプログラムによって制御されます。 このユーザー・クリップは、現在のTransformによってデバイス空間に変換され、ウィンドウの可視性およびデバイスの大きさによって定義されるデバイス・クリップと結合されます。 ユーザー・クリップとデバイス・クリップの組み合わせによって、最終的なクリッピング領域を決定する複合クリップが定義されます。 レンダリング・システムは、ユーザー・クリップを変更して複合クリップの結果を反映することはできません。
    3. 描画する色を指定する
    4. Graphics2Dコンテキストの現在のComposite属性を使って、デスティネーションの描画表面に指定された色を塗る。

    3種類の描画操作について、それぞれの描画プロセスの詳細を次に示します。
    1. Shapeの操作
      1. draw(Shape)操作の場合は、Graphics2Dコンテキストの現在のStroke属性でcreateStrokedShapeメソッドを使用して、指定のShapeの輪郭を格納する新しいShapeオブジェクトが構築されます。
      2. Shapeは、Graphics2Dコンテキストの現在のTransformを使ってユーザー空間からデバイス空間に変換されます。
      3. Shapeの輪郭は、ShapegetPathIteratorメソッドを使って抽出されます。このメソッドは、Shapeの境界に沿って反復処理を行うPathIteratorオブジェクトを返します。
      4. PathIteratorオブジェクトによって返される曲線セグメントをGraphics2Dオブジェクトが処理できない場合は、Shapeの平坦化を行うShapeの代替メソッドgetPathIteratorを呼び出すことができます。
      5. Graphics2Dコンテキストの現在のPaintが、デバイス空間で描画する色を指定するPaintContextを取得するために照会されます。
    2. テキストの操作
      1. 指定されたStringを描画するために必要なグリフのセットは、次のステップで指定されます。
        1. 引数がStringの場合、フォントが実装する基本レイアウトおよび形状決定アルゴリズムに関係なくそれらを用いて表示するために、Graphics2Dコンテキストの現在のFontStringのUnicode文字列をグリフのセットに変換するように要求されます。
        2. 引数がAttributedCharacterIteratorの場合、イテレータは、埋込みフォント属性を使って、それ自体をTextLayoutに変換するように要求されます。 TextLayoutは、書込み方向が異なる複数のフォントのために自動的にUnicodeの双方向レイアウト調整を実行する、より高性能なグリフ・レイアウト・アルゴリズムを実装できます。
        3. 引数がGlyphVectorの場合、GlyphVectorオブジェクトは、各グリフの位置を示す明示的な座標を持つフォント独自の適切なグリフ・コードをすでに格納しています。
      2. 現在のFontを照会すると、指定されたグリフのアウトラインを取得できます。 これらのアウトラインは、ステップ1で指定された各グリフの位置を基準にしたユーザー空間の形状として処理されます。
      3. 文字のアウトラインが、Shapeの操作」で説明したように塗りつぶされます。
      4. 現在のPaintが、デバイス空間で描画する色を指定するPaintContextを取得するために照会されます。
    3. Imageの操作
      1. 対象となる領域は、ソースImageのバウンディング・ボックスで定義されます。 このバウンディング・ボックスは、Imageオブジェクトのローカルな座標系であるイメージ空間で指定されます。
      2. AffineTransformdrawImage(Image, AffineTransform, ImageObserver)に渡される場合は、イメージ空間からユーザー空間にバウンディング・ボックスを変換するために、そのAffineTransformが使われます。 AffineTransformが指定されない場合、バウンディング・ボックスはすでにユーザー空間にあるものとして扱われます。
      3. ソースImageのバウンディング・ボックスは、現在のTransformを使ってユーザー空間からデバイス空間に変換されます。 ただし、バウンディング・ボックスを変換した結果が、デバイス空間で矩形領域となるとは限りません。
      4. Imageオブジェクトは描画する色を指定します。色は、現在のTransformとオプションのイメージ変換によって指定されたソースからデスティネーションへのマッピングに従ってサンプリングされます。

    デフォルトの描画属性

    Graphics2D描画属性のデフォルト値を次に示します。
    Paint
    Componentの色。
    Font
    ComponentFont
    Stroke
    線幅1、破線なし、マイター・セグメント結合、および角エンド・キャップを持つ角ペン
    Transform
    ComponentGraphicsConfiguration用のgetDefaultTransform
    Composite
    AlphaComposite.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属性の設定および描画ヒントに基づいてGraphics2DGraphicsをどのように拡張しているかが明確に示されています。 その定義は、デフォルトの属性設定では同じように実行されます。 たとえば、デフォルトのStrokeは、幅1および破線なしのBasicStrokeであり、画面描画のデフォルトのTransformは恒等変換です。

    次の2つのルールは、アンチエイリアスまたは非アンチエイリアスのどちらが使用されていても、予測可能な描画動作を提供します。

    • デバイス・ピクセル間にデバイス座標が定義され、それによりエイリアス描画とアンチエイリアス描画の間で一貫性のある結果が得られます。 座標がピクセルの中心にあるように定義された場合、矩形などの形状によってカバーされる一部のピクセルは半分だけしかカバーされません。 非アンチエイリアスの描画の場合、半分カバーされたピクセルは形状の内側か外側のどちらかが描画されます。 アンチエイリアスの描画では、形状のエッジ全体にあるピクセルが半分だけカバーされます。 しかし、ピクセルの間に座標が定義されていれば、矩形などの形状は、アンチエイリアスを使って描画されるどうかに関係なく、半分だけカバーされたピクセルを持つことはありません。
    • BasicStrokeオブジェクトを使ってストロークした線および図形の輪郭を「正規化」することで、描画可能なさまざまな位置で非アンチエイリアス描画またはアンチエイリアス描画するときに、一貫性のある輪郭を描画することができます。 この正規化プロセスはKEY_STROKE_CONTROLヒントによって制御されます。 正確な正規化アルゴリズムは指定されませんが、この正規化の目標は、ピクセル・グリッドに線がどのように収まるかに関わらず、視覚的に一貫性のある線を描画できるようにすること、およびアンチエイリアス・モードでの水平線および垂直線をより緻密にして、アンチエイリアスされていない場合の線になるべく近づけることです。 通常の正規化のステップでは、浮動小数点の線幅が同等の可能性で偶数または奇数のピクセル数に四捨五入できるように、アンチエイリアスされた線の終端をよりピクセルの中心にして重なる量を減らすか、あるいはアンチエイリアスされていない線のサブピクセルの位置決めを調整します。 このプロセスでは、終端をピクセルの半分まで移動して(通常は両軸に沿って正の無限大方向)、これらの結果の一貫性を高めることができます。

    次に示す一般的な従来のメソッドの定義は、デフォルト属性設定では以前に指定された動作と同じように実行されます。

    • fillRectfillRoundRectfillOvalfillArcfillPolygonclearRectなどのfill操作の場合は、目的のShapeを指定してfillを呼び出すことができます。 たとえば矩形を塗りつぶす場合は、
       fill(new Rectangle(x, y, w, h));
       
      を呼び出します。
    • 同じように、drawLinedrawRectdrawRoundRectdrawOvaldrawArcdrawPolylinedrawPolygonなどの描画操作の場合は、目的の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つのメソッドを定義します。

    1. setPaintModeメソッドは、setComposite(new AlphaComposite.SrcOver)に相当するデフォルトのCompositeを設定する簡易メソッドとして実装されます。
    2. setXORMode(Color xorcolor)メソッドは、ソース・カラーのAlpha成分を無視し、デスティネーション・カラーをその値に設定する特殊なCompositeオブジェクトを設定するための簡易メソッドとして実装されます。
       dstpixel = (PixelOf(srccolor) ^ PixelOf(xorcolor) ^ dstpixel);
       

    関連項目:
    RenderingHints
    • コンストラクタの詳細

      • Graphics2D

        protected Graphics2D()
        新しいGraphics2Dオブジェクトを構築します。 Graphics2Dは抽象クラスであり、さまざまな出力デバイスのためにサブクラスでカスタマイズされなければならないため、Graphics2Dオブジェクトを直接作成することはできません。 代わりに、Graphics2Dオブジェクトは、ほかのGraphics2Dオブジェクトから取得するか、Componentによって作成するか、あるいはBufferedImageオブジェクトなどのイメージから取得しなければいけません。
        関連項目:
        Component.getGraphics(), Graphics.create()
    • メソッドの詳細

      • 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値。
        関連項目:
        Graphics.fill3DRect(int, int, int, int, 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値。
        関連項目:
        Graphics.draw3DRect(int, int, int, int, boolean)
      • drawImage

        public abstract boolean drawImage​(Image img,
                                          AffineTransform xform,
                                          ImageObserver obs)
        イメージ空間からユーザー空間への変換を適用してから、イメージを描画します。 ユーザー空間からデバイス空間への変換は、Graphics2D内の現在のTransformで実行されます。 指定された変換は、Graphics2Dコンテキスト内の変換属性が適用される前にイメージに適用されます。 適用される描画属性には、ClipTransform、およびComposite属性が含まれます。 ただし、指定された変換が逆変換を持たない場合、描画は行われません。
        パラメータ:
        img - 描画される指定イメージ。 imgがnullである場合、このメソッドは何も行いません。
        xform - イメージ空間からユーザー空間への変換
        obs - Imageのより多くの部分が変換されると通知されるImageObserver
        戻り値:
        Imageがすべてロードされ、完全に描画された場合、またはnullの場合はtrueImageがまだロード中の場合はfalse
        関連項目:
        transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)
      • drawRenderedImage

        public abstract void drawRenderedImage​(RenderedImage img,
                                               AffineTransform xform)
        レンダリングの前にイメージ空間からユーザー空間への変換を適用して、RenderedImageをレンダリングします。 ユーザー空間からデバイス空間への変換は、Graphics2D内の現在のTransformで実行されます。 指定された変換は、Graphics2Dコンテキスト内の変換属性が適用される前にイメージに適用されます。 適用される描画属性には、ClipTransform、およびComposite属性が含まれます。 ただし、指定された変換が逆変換を持たない場合、描画は行われません。
        パラメータ:
        img - 描画されるイメージ。 imgがnullである場合、このメソッドは何も行いません。
        xform - イメージ空間からユーザー空間への変換
        関連項目:
        transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)
      • drawRenderableImage

        public abstract void drawRenderableImage​(RenderableImage img,
                                                 AffineTransform xform)
        レンダリングの前にイメージ空間からユーザー空間への変換を適用して、RenderableImageを描画します。 ユーザー空間からデバイス空間への変換は、Graphics2D内の現在のTransformで実行されます。 指定された変換は、Graphics2Dコンテキスト内の変換属性が適用される前にイメージに適用されます。 適用される描画属性には、ClipTransform、およびComposite属性が含まれます。 ただし、指定された変換が逆変換を持たない場合、描画は行われません。

        Graphics2Dオブジェクトに設定された描画ヒントは、RenderableImageの描画に使用できます。 特定のRenderableImageによって認識された特定のヒントに明示的な制御が必要な場合や、どのヒントが使用されるかを知っておく必要がある場合には、RenderedImageRenderableImageから直接取得し、drawRenderedImageを使って描画する必要があります。

        パラメータ:
        img - 描画されるイメージ。 imgがnullである場合、このメソッドは何も行いません。
        xform - イメージ空間からユーザー空間への変換
        関連項目:
        transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int), drawRenderedImage(java.awt.image.RenderedImage, java.awt.geom.AffineTransform)
      • drawString

        public abstract void drawString​(String str,
                                        int x,
                                        int y)
        Graphics2Dコンテキスト内の現在のテキスト属性状態を使用して、指定されたStringのテキストを描画します。 最初の文字のベースラインは、ユーザー空間内の位置(xy)にあります。 適用される描画属性には、ClipTransformPaintFont、およびComposite属性が含まれます。 ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。
        定義:
        drawString、クラスGraphics
        パラメータ:
        str - 描画される文字列
        x - Stringが描画される位置のx座標
        y - Stringが描画される位置のy座標
        例外:
        NullPointerException - strnullの場合
        導入されたバージョン:
        1.0
        関連項目:
        Graphics.drawBytes(byte[], int, int, int, int), Graphics.drawChars(char[], int, int, int, int)
      • hit

        public abstract boolean hit​(Rectangle rect,
                                    Shape s,
                                    boolean onStroke)
        指定されたShapeが、デバイス空間内にある指定されたRectangleと交差しているかどうかをチェックします。 onStrokeがfalseの場合、このメソッドは指定されたShapeの内部が指定されたRectangleと交差するかどうかを調べます。 onStroketrueの場合、このメソッドは指定されたShapeの輪郭のStrokeが指定されたRectangleと交差するかどうかを調べます。 考慮される描画属性には、ClipTransform、およびStrokeの各属性があります。
        パラメータ:
        rect - ヒットを調べるデバイス空間の領域
        s - ヒットを調べるShape
        onStroke - ストロークで描画された形状を調べるか塗りつぶされた形状を調べるかを選択するフラグ。 フラグがtrueの場合は、Strokeの輪郭が調べられる。 フラグがfalseの場合は、塗りつぶされたShapeが調べられる。
        戻り値:
        ヒットがある場合はtrue、そうでない場合はfalse
        関連項目:
        setStroke(java.awt.Stroke), fill(java.awt.Shape), draw(java.awt.Shape), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)
      • getDeviceConfiguration

        public abstract GraphicsConfiguration getDeviceConfiguration()
        このGraphics2Dに関連付けられたデバイス構成を返します。
        戻り値:
        このGraphics2Dのデバイス構成。
      • setComposite

        public abstract void setComposite​(Composite comp)
        Graphics2DコンテキストのCompositeを設定します。 Compositeは、drawImagedrawStringdrawfillなどのすべての描画メソッドで使用されます。 これは、グラフィックス・デバイスでの描画処理中に新しいピクセルが既存のピクセルとどのように結合されるかを指定します。

        このGraphics2Dコンテキストが表示画面のComponentに描画されている場合で、CompositeAlphaCompositeクラスのインスタンスではなくカスタム・オブジェクトであるときは、セキュリティ・マネージャがあればそのcheckPermissionメソッドがAWTPermission("readDisplayPixels")アクセス権で呼び出されます。

        パラメータ:
        comp - 描画に使われるCompositeオブジェクト
        例外:
        SecurityException - 画面に描画するためにカスタムCompositeオブジェクトが使用されており、セキュリティ・マネージャが設定されている場合に、セキュリティ・マネージャのcheckPermissionメソッドがこの操作を許可しないとき。
        関連項目:
        Graphics.setXORMode(java.awt.Color), Graphics.setPaintMode(), getComposite(), AlphaComposite, SecurityManager.checkPermission(java.security.Permission), AWTPermission
      • setPaint

        public abstract void setPaint​(Paint paint)
        Graphics2DコンテキストのPaint属性を設定します。 このメソッドをnull Paintオブジェクトで呼び出しても、このGraphics2Dの現在のPaint属性には影響しません。
        パラメータ:
        paint - 描画プロセスで色を生成するために使われるPaintオブジェクト、またはnull
        関連項目:
        Graphics.setColor(java.awt.Color), getPaint(), GradientPaint, TexturePaint
      • setStroke

        public abstract void setStroke​(Stroke s)
        Graphics2DコンテキストのStrokeを設定します。
        パラメータ:
        s - 描画プロセスでShapeをストロークで描画するために使われるStrokeオブジェクト
        関連項目:
        BasicStroke, getStroke()
      • setRenderingHint

        public abstract void setRenderingHint​(RenderingHints.Key hintKey,
                                              Object hintValue)
        描画アルゴリズムの推奨設定の値を1つ設定します。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。
        パラメータ:
        hintKey - 設定されるヒントのキー。
        hintValue - 指定されたヒント・カテゴリの推奨設定を示す値。
        関連項目:
        getRenderingHint(RenderingHints.Key), RenderingHints
      • getRenderingHint

        public abstract Object getRenderingHint​(RenderingHints.Key hintKey)
        描画アルゴリズムの推奨設定の値を1つ返します。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。
        パラメータ:
        hintKey - 取得するヒントに対応するキー。
        戻り値:
        指定されたヒント・キーの値を表すオブジェクト。 いくつかのキーとそのキーに関連した値はRenderingHintsクラスで定義されている。
        関連項目:
        RenderingHints, setRenderingHint(RenderingHints.Key, Object)
      • setRenderingHints

        public abstract void setRenderingHints​(Map<?,​?> hints)
        描画アルゴリズムのすべての推奨設定の値を指定されたhintsに置き換えます。 描画ヒントの既存の値はすべて破棄され、既知のヒントと値の新しいセットが指定されたMapオブジェクトから初期化されます。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。
        パラメータ:
        hints - 設定される描画ヒント
        関連項目:
        getRenderingHints(), RenderingHints
      • addRenderingHints

        public abstract void addRenderingHints​(Map<?,​?> hints)
        描画アルゴリズムに関する任意の数の推奨設定の値を設定します。 指定されたMapオブジェクトにある描画ヒントの値だけが変更されます。 指定されたオブジェクトにない推奨設定は変更されません。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。
        パラメータ:
        hints - 設定される描画ヒント
        関連項目:
        RenderingHints
      • getRenderingHints

        public abstract RenderingHints getRenderingHints()
        レンダリング・アルゴリズムの推奨設定を取得します。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 1回のオペレーションで指定されたすべてのヒント・キーと値のペアを返します。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。
        戻り値:
        現在の推奨設定を格納しているRenderingHintsのインスタンスへの参照。
        関連項目:
        RenderingHints, setRenderingHints(Map)
      • translate

        public abstract void translate​(int x,
                                       int y)
        Graphics2Dコンテキストの原点を現在の座標系内の点(xy)に平行移動します。 Graphics2Dコンテキストを修正して、新しい原点がGraphics2Dコンテキストの元の座標系の点(xy)に対応するようにします。 このグラフィックス・コンテキストでそれ以降の描画操作で使用される座標はすべて、この新しい原点を基準にします。
        定義:
        translate、クラスGraphics
        パラメータ:
        x - 指定されたx座標
        y - 指定されたy座標
        導入されたバージョン:
        1.0
      • 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)
        現在のGraphics2D Transformを回転変換に連結します。 以降の描画は、以前の原点を基準に指定されたラジアンで回転します。 これは、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)
        現在のGraphics2D Transformを平行移動された回転変換に連結します。 以降の描画は、指定された位置に移動し、指定されたラジアンで回転し、元の平行移動と同じ量で平行移動し直すことで作成される変換によって変換されます。 これは、次の呼出しシーケンスに相当します。
                  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)
        現在のGraphics2D Transformをスケーリング変換に連結します。以降の描画は、以前のスケーリングを基準に指定されたスケーリング係数に従ってサイズ変更されます。 これは、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)
        現在のGraphics2D Transformをシャーリング変換に連結します。 以降の描画は、以前の位置を基準に指定された乗数でシャーリングされます。 これは、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による変換の結果は新しいTransform Cx'になります。 Cx'は、このGraphics2D用の現在のTransformになります。 更新されたTransform Cx'で点pを変換することは、最初にTxでpを変換してから、その結果を元のTransform Cxで変換することに相当します。 つまり、Cx'(p)= Cx(Tx(p))です。 必要に応じてTxのコピーを行うと、Txをそれ以上修正しても描画に影響しません。
        パラメータ:
        Tx - 現在のTransformで変換されるAffineTransformオブジェクト
        関連項目:
        setTransform(java.awt.geom.AffineTransform), AffineTransform
      • setTransform

        public abstract void setTransform​(AffineTransform Tx)
        Graphics2Dコンテキスト内のTransformを上書きします。 警告:このメソッドは新しい座標変換を既存の変換上で適用する目的では決して使用しないでください。これは、Graphics2Dには、Swingコンポーネントの描画またはプリンタの解像度を調整するためのスケーリング変換の適用など、ほかの目的のために必要な変換がすでに含まれていることがあるからです。

        座標変換を追加するには、transformrotatescale、または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
        関連項目:
        transform(java.awt.geom.AffineTransform), getTransform(), AffineTransform
      • getComposite

        public abstract Composite getComposite()
        Graphics2Dコンテキスト内の現在のCompositeを返します。
        戻り値:
        重ね合わせスタイルを定義する現在のGraphics2D Composite
        関連項目:
        setComposite(java.awt.Composite)
      • setBackground

        public abstract void setBackground​(Color color)
        Graphics2Dコンテキストの背景色を設定します。 バックグラウンド・カラーは、領域をクリアするために使われます。 Graphics2DComponent用に作成すると、バックグラウンド・カラーがComponentから継承されます。 Graphics2Dコンテキストでのバックグラウンド・カラーを設定しても、それ以降のclearRect呼出しに作用するだけで、Componentのバックグラウンド・カラーには影響を及ぼしません。 Componentのバックグラウンドを変更するには、Componentの適切なメソッドを使用します。
        パラメータ:
        color - 以降のclearRectの呼出しで使用されるバックグラウンド・カラー
        関連項目:
        getBackground(), Graphics.clearRect(int, int, int, int)
      • getBackground

        public abstract Color getBackground()
        領域をクリアするのに使うバックグラウンド・カラーを返します。
        戻り値:
        バックグラウンド・カラーを定義する現在のGraphics2D Color
        関連項目:
        setBackground(java.awt.Color)
      • getStroke

        public abstract Stroke getStroke()
        Graphics2Dコンテキスト内の現在のStrokeを返します。
        戻り値:
        線のスタイルを定義する現在のGraphics2D Stroke
        関連項目:
        setStroke(java.awt.Stroke)
      • clip

        public abstract void clip​(Shape s)
        現在のClipを指定されたShapeの内部と交差させ、そのClipを結果として得られる共通部分に設定します。 指定されたShapeは、現在のClipと交差する前に、現在のGraphics2D Transformを使って変換されます。 このメソッドを使うと、現在のClipを小さくできます。 Clipを大きくするには、setClipメソッドを使います。 このメソッドによって変更されたユーザー・クリップは、デバイスの境界および可視性と関連したクリッピングとは無関係です。 これまでに設定されているクリップがない場合、またはsetClipnull引数を使ってクリップがクリアされている場合は、指定されたShapeが新しいユーザー・クリップになります。
        パラメータ:
        s - 現在のClipと交差するShape snullの場合、このメソッドは現在のClipをクリアする。
      • getFontRenderContext

        public abstract FontRenderContext getFontRenderContext()
        このGraphics2Dコンテキスト内のFontのレンダリング・コンテキストを取得します。 FontRenderContextは、アンチエイリアスや部分メトリックスなどのアプリケーション・ヒントのほか、ターゲット・デバイスに特有の解像度(dpi)などの情報をカプセル化します。 こうした情報は、FontTextLayoutなどの文字体裁のフォーマットを実行するオブジェクトの使用時にアプリケーションによって提供されます。 この情報はまた、各種描画ヒントがテキスト描画に適用されたときに、それ自体のレイアウトを実行し、有効幅や行の高さなど、グリフの各種特性の正確な計測を必要とするアプリケーションによって提供されなければいけません。
        戻り値:
        FontRenderContextのインスタンスへの参照
        導入されたバージョン:
        1.2
        関連項目:
        FontRenderContext, Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String), TextLayout