JavaTM 2 Platform
Std. Ed. v1.3

java.awt
クラス Graphics2D

java.lang.Object
  |
  +--java.awt.Graphics
        |
        +--java.awt.Graphics2D

public abstract class Graphics2D
extends Graphics

Graphics2D クラスは、Graphics クラスを拡張して、ジオメトリ、座標変換、カラー管理、テキスト配置について高度な制御を行います。このクラスは、JavaTM プラットフォームで 2D の図形、テキスト、およびイメージを描画するための基本クラスです。

座標空間

Graphics2D オブジェクトに渡されるすべての座標は、ユーザ空間 (アプリケーションによって使用される) と呼ばれる、デバイスに依存しない座標系で指定されます。Graphics2D オブジェクトには、デバイス空間の、デバイスに依存する座標にユーザ空間の座標を変換する方法を定義する AffineTransform オブジェクトが、描画状態の一部として格納されます。

デバイス空間の座標は、通常、個別のデバイスピクセルを示し、こうしたピクセル間の無限に細い間隔に並べられています。Graphics2D オブジェクトの一部は、描画操作を取り込むことができます。これを使えば、物理的な解像度が不明な具象デバイスであとで再生するために、グラフィックスメタファイルに描画操作を格納しておくことができます。解像度は描画操作を取り込む際には未定義なので、Graphics2D Transform を設定してユーザ座標を仮想デバイス空間に変換するようにします。ターゲットデバイスの予想される解像度が概算されますが、その見積もりが正しくない場合には、再生時にさらに変換を適用する必要があります。

描画属性オブジェクトによって実行される操作のなかにはデバイス空間で処理されるものもありますが、Graphics2D のメソッドはすべてユーザ空間座標を扱います。

すべての Graphics2D オブジェクトは、描画の行われる位置を定義するターゲットと関連付けられています。GraphicsConfiguration オブジェクトは、ピクセル形式および解像度といった描画ターゲットの特性を定義します。Graphics2D オブジェクトでは、常に同じ描画ターゲットが使用されます。

Graphics2D オブジェクトが作成されるとき、GraphicsConfiguration は、Graphics2D (Component または Image) のターゲットとしてデフォルト変換を指定します。このデフォルト変換では、ユーザ空間座標系を画面とプリンタのデバイス座標にマッピングして、原点をデバイスのターゲット領域の左上隅に、右方に拡張するには X 座標を、下方に拡張するには Y 座標を増やすようなマッピングを行います。画面デバイスなどの 72 dpi に近いデバイスの場合、デフォルト変換のスケーリングはそれらのデバイスの識別情報に設定されます。プリンタなどの高解像度デバイスの場合、デフォルト変換のスケーリングは、1 平方インチ当たり約 72 ユーザ空間座標に設定されます。イメージバッファでは、デフォルトの変換は恒等変換です。

描画プロセス

描画プロセスは、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 の平坦化を行う代替メソッド 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 にクリップされる

描画互換性

JDKTM 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 つの規則は、非アンチエイリアスまたはアンチエイリアスのどちらが使用されていても、予測可能な描画動作を提供します。

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

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

コンストラクタの概要
protected Graphics2D()
          新しい Graphics2D オブジェクトを構築します。
 
メソッドの概要
abstract  void addRenderingHints(Map hints)
          描画アルゴリズムに関する任意の数の推奨設定の値を設定します。
abstract  void clip(Shape s)
          現在の Clip を指定された Shape の内部と交差して、その Clip を結果として生じた共通部分に設定します。
abstract  void draw(Shape s)
          現在の Graphics2D コンテキストの設定を使うことにより、Shape の輪郭をストロークで描画します。
 void draw3DRect(int x, int y, int width, int height, boolean raised)
          指定された矩形の輪郭を 3D で強調表示して描画します。
abstract  void drawGlyphVector(GlyphVector g, float x, float y)
          Graphics2D コンテキストの描画属性を使うことにより、指定された GlyphVector のテキストを描画します。
abstract  void drawImage(BufferedImage img, BufferedImageOp op, int x, int y)
          BufferedImageOp でフィルタ処理される BufferedImage を描画します。
abstract  boolean drawImage(Image img, AffineTransform xform, ImageObserver obs)
          イメージ空間からユーザ空間への変換を適用してから、イメージを描画します。
abstract  void drawRenderableImage(RenderableImage img, AffineTransform xform)
          イメージ空間からユーザ空間への変換を適用してから、RenderableImage を描画します。
abstract  void drawRenderedImage(RenderedImage img, AffineTransform xform)
          イメージ空間からユーザ空間への変換を適用してから、RenderedImage を描画します。
abstract  void drawString(AttributedCharacterIterator iterator, float x, float y)
          Graphics2D コンテキストの現在の Paint を使うことにより、指定された反復子のテキストを描画します。
abstract  void drawString(AttributedCharacterIterator iterator, int x, int y)
          Graphics2D コンテキストの現在の Paint を使うことにより、指定された反復子のテキストを描画します。
abstract  void drawString(String s, float x, float y)
          Graphics2D コンテキストの現在の Font 属性と Paint 属性を使うことにより、指定された String が表すテキストを描画します。
abstract  void drawString(String str, int x, int y)
          Graphics2D コンテキストの現在の Font 属性と Paint 属性を使うことにより、指定された String のテキストを描画します。
abstract  void fill(Shape s)
          Graphics2D コンテキストの設定を使うことにより、Shape の内部を塗りつぶします。
 void fill3DRect(int x, int y, int width, int height, boolean raised)
          現在の色で塗りつぶされている、3D で強調表示された矩形をペイントします。
abstract  Color getBackground()
          領域をクリアするのに使うバックグラウンドカラーを返します。
abstract  Composite getComposite()
          Graphics2D コンテキストでの現在の Composite を返します。
abstract  GraphicsConfiguration getDeviceConfiguration()
          この Graphics2D に関連したデバイス構成を返します。
abstract  FontRenderContext getFontRenderContext()
          この Graphics2D コンテキストでの Font の描画コンテキストを返します。
abstract  Paint getPaint()
          Graphics2D コンテキストでの現在の Paint を返します。
abstract  Object getRenderingHint(RenderingHints.Key hintKey)
          描画アルゴリズムの推奨設定の値を 1 つ返します。
abstract  RenderingHints getRenderingHints()
          描画アルゴリズムの推奨設定を返します。
abstract  Stroke getStroke()
          Graphics2D コンテキストでの現在の Stroke を返します。
abstract  AffineTransform getTransform()
          Graphics2D コンテキストでの現在の Transform のコピーを返します。
abstract  boolean hit(Rectangle rect, Shape s, boolean onStroke)
          指定された Shape が指定された Rectangle (デバイス空間にある) と交差するかどうかを判定します。
abstract  void rotate(double theta)
          現在の Graphics2D Transform を回転変換と連結します。
abstract  void rotate(double theta, double x, double y)
          現在の Graphics2D Transform を移動後の回転変換と連結します。
abstract  void scale(double sx, double sy)
          現在の Graphics2D Transform をスケーリング変換と連結します。
abstract  void setBackground(Color color)
          Graphics2D コンテキストのバックグラウンドカラーを設定します。
abstract  void setComposite(Composite comp)
          Graphics2D コンテキストの Composite を設定します。
abstract  void setPaint(Paint paint)
          Graphics2D コンテキストに Paint 属性を設定します。
abstract  void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
          描画アルゴリズムの推奨設定の値を 1 つ設定します。
abstract  void setRenderingHints(Map hints)
          描画アルゴリズムのすべての推奨設定の値を、指定された hints に置き換えます。
abstract  void setStroke(Stroke s)
          Graphics2D コンテキストの Stroke を設定します。
abstract  void setTransform(AffineTransform Tx)
          この Graphics2D コンテキストでの Transform を設定します。
abstract  void shear(double shx, double shy)
          現在の Graphics2D Transform をシャーリング変換と連結します。
abstract  void transform(AffineTransform Tx)
          AffineTransform オブジェクトをこの Graphics2D での Transform を使って、後指定優先適用という規則に従って変換します。
abstract  void translate(double tx, double ty)
          現在の Graphics2D Transform を移動変換と連結します。
abstract  void translate(int x, int y)
          Graphics2D コンテキストの原点を、現在の座標体系の点 (xy) に移動します。
 
クラス 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
 
クラス java.lang.Object から継承したメソッド
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

Graphics2D

protected Graphics2D()
新しい Graphics2D オブジェクトを構築します。Graphics2D は abstract クラスで、さまざまな出力デバイスのためにサブクラスでカスタマイズされなければならないので、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 は無視します。

オーバーライド:
クラス Graphics 内の draw3DRect
パラメータ:
x, 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 は無視します。
オーバーライド:
クラス Graphics 内の fill3DRect
パラメータ:
x, y - 塗りつぶされる矩形の座標
width - 塗りつぶされる矩形の幅
height - 塗りつぶされる矩形の高さ
raised - 矩形が表面から浮き出たように見えるか、表面に彫り込まれたように見えるかを指定する boolean 値
関連項目:
Graphics.draw3DRect(int, int, int, int, boolean)

draw

public abstract void draw(Shape s)
現在の Graphics2D コンテキストの設定を使うことにより、Shape の輪郭をストロークで描画します。適用される描画属性には、ClipTransformPaintComposite、および Stroke の各属性があります。
パラメータ:
s - 描画される Shape
関連項目:
setStroke(java.awt.Stroke), setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), clip(java.awt.Shape), Graphics.setClip(int, int, int, int), setComposite(java.awt.Composite)

drawImage

public abstract boolean drawImage(Image img,
                                  AffineTransform xform,
                                  ImageObserver obs)
イメージ空間からユーザ空間への変換を適用してから、イメージを描画します。ユーザ空間からデバイス空間への変換は、Graphics2D での現在の Transform によって行われます。指定された変換は、Graphics2D コンテキストの変換属性に適用される前にイメージに適用されます。適用される描画属性には、ClipTransform、および Composite の各属性があります。ただし、指定された変換が逆変換を持たない場合、描画は行われません。
パラメータ:
img - 描画される Image
xform - イメージ空間からユーザ空間への変換
obs - Image のより多くの部分が変換されると、通知される ImageObserver
戻り値:
Image がすべてロードされ、完全に描画された場合は 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)

drawImage

public abstract void drawImage(BufferedImage img,
                               BufferedImageOp op,
                               int x,
                               int y)
BufferedImageOp でフィルタ処理される BufferedImage を描画します。適用される描画属性には、ClipTransform、および Composite の各属性があります。これは、次の操作に相当します。
 img1 = op.filter(img, null);
 drawImage(img1, new AffineTransform(1f,0f,0f,1f,x,y), null);
パラメータ:
op - 描画前にイメージに適用されるフィルタ
img - 描画される BufferedImage
x, y - イメージの左上隅が描画されるユーザ空間の位置
関連項目:
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 - 描画されるイメージ
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 - 描画されるイメージ
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 コンテキストの現在の Font 属性と Paint 属性を使うことにより、指定された String のテキストを描画します。最初の文字のベースラインは、ユーザ空間の (xy) に位置します。適用される描画属性には、ClipTransformPaintFont、および Composite の各属性があります。ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。
オーバーライド:
クラス Graphics 内の drawString
パラメータ:
str - 描画される文字列
x, y - String が描画される座標
例外:
NullPointerException - strnull の場合
導入されたバージョン:
JDK1.0
関連項目:
Graphics.drawBytes(byte[], int, int, int, int), Graphics.drawChars(char[], int, int, int, int)

drawString

public abstract void drawString(String s,
                                float x,
                                float y)
Graphics2D コンテキストの現在の Font 属性と Paint 属性を使うことにより、指定された String が表すテキストを描画します。最初の文字のベースラインは、ユーザ空間の (xy) に位置します。適用される描画属性には、ClipTransformPaintFont、および Composite の各属性があります。ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。
パラメータ:
s - 描画される String
x, y - String が描画される座標
例外:
NullPointerException - strnull の場合
関連項目:
setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), Graphics.setFont(java.awt.Font), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

drawString

public abstract void drawString(AttributedCharacterIterator iterator,
                                int x,
                                int y)
Graphics2D コンテキストの現在の Paint を使うことにより、指定された反復子のテキストを描画します。反復子は、各文字のフォントを指定しなければなりません。最初の文字のベースラインは、ユーザ空間の (xy) に位置します。適用される描画属性には、ClipTransformPaint、および Composite の各属性があります。ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。
オーバーライド:
クラス Graphics 内の drawString
パラメータ:
iterator - 描画されるテキストを持つ反復子
x, y - 反復子のテキストが描画される座標
関連項目:
setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

drawString

public abstract void drawString(AttributedCharacterIterator iterator,
                                float x,
                                float y)
Graphics2D コンテキストの現在の Paint を使うことにより、指定された反復子のテキストを描画します。反復子は各文字のフォントを指定しなければなりません。最初の文字のベースラインは、ユーザ空間の (xy) に位置します。適用される描画属性には、ClipTransformPaint、および Composite の各属性があります。ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。
パラメータ:
iterator - 描画されるテキストを持つ反復子
x, y - 反復子のテキストが描画される座標
関連項目:
setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

drawGlyphVector

public abstract void drawGlyphVector(GlyphVector g,
                                     float x,
                                     float y)
Graphics2D コンテキストの描画属性を使うことにより、指定された GlyphVector のテキストを描画します。適用される描画属性には、ClipTransformPaint、および Composite の各属性があります。GlyphVector は、個々のグリフを Font から指定します。また、GlyphVector は、グリフの位置も格納できます。このメソッドを使うと、画面に一連の文字列をもっとも速く描画できます。
パラメータ:
g - 描画される GlyphVector
x, y - グリフが描画される User Space の位置
関連項目:
java.awt.font, GlyphVector, setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)

fill

public abstract void fill(Shape s)
Graphics2D コンテキストの設定を使うことにより、Shape の内部を塗りつぶします。適用される描画属性には、ClipTransformPaint、および Composite の各属性があります。
パラメータ:
s - 塗りつぶされる Shape
関連項目:
setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(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 に関連したデバイス構成を返します。

setComposite

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

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

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

setStroke

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

setRenderingHint

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

getRenderingHint

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

setRenderingHints

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

addRenderingHints

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

getRenderingHints

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

translate

public abstract void translate(int x,
                               int y)
Graphics2D コンテキストの原点を、現在の座標体系の点 (xy) に移動します。Graphics2D コンテキストを修正して、新しい原点が Graphics2D コンテキストの元の座標体系の点 (xy) に相当します。このグラフィックスコンテキストでそれ以降の描画操作で使用される座標はすべて、この新しい原点を基準にします。
オーバーライド:
クラス Graphics 内の translate
パラメータ:
x, y - 指定された座標
導入されたバージョン:
JDK1.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, 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)
AffineTransform オブジェクトをこの Graphics2D での Transform を使って、後指定優先適用という規則に従って変換します。現在の 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 を設定します。
パラメータ:
Tx - 描画プロセスで使われる AffineTransform オブジェクト
関連項目:
transform(java.awt.geom.AffineTransform), AffineTransform

getTransform

public abstract AffineTransform getTransform()
Graphics2D コンテキストでの現在の Transform のコピーを返します。
戻り値:
Graphics2D コンテキストでの現在の AffineTransform
関連項目:
transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform)

getPaint

public abstract Paint getPaint()
Graphics2D コンテキストでの現在の Paint を返します。
戻り値:
色またはパターンを定義する現在の Graphics2D Paint
関連項目:
setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color)

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 と交差する Shapesnull の場合、このメソッドは現在の 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

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.