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つの操作にまとめたり、さまざまな属性に関する単純な共通の問題点を、操作のほかの部分を変更することにより排除したりすること、などによって行われます。
描画プロセスのステップを次に説明します。
Clipに制限する。 Clipはユーザー空間のShapeによって指定され、GraphicsおよびGraphics2Dのさまざまなクリップ操作メソッドを使ってプログラムによって制御されます。 このユーザー・クリップは、現在のTransformによってデバイス空間に変換され、ウィンドウの可視性およびデバイスの大きさによって定義されるデバイス・クリップと結合されます。 ユーザー・クリップとデバイス・クリップの組み合わせによって、最終的なクリッピング領域を決定する複合クリップが定義されます。 レンダリング・システムは、ユーザー・クリップを変更して複合クリップの結果を反映することはできません。
Graphics2Dコンテキストの現在のComposite属性を使って、デスティネーションの描画表面に指定された色を塗る。
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描画属性のデフォルト値を次に示します。
Paint
Componentの色。
Font
ComponentのFont。
Stroke
Transform
ComponentのGraphicsConfiguration用のgetDefaultTransform。
Composite
AlphaComposite.SRC_OVERルール。
Clip
Clipなし、出力はComponentにクリップされる。
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);
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) |
指定されたイテレータのテキストを、その属性を
TextAttributeクラスの仕様に従って適用しながら描画します。 |
abstract void |
drawString(AttributedCharacterIterator iterator, int x, int y) |
指定されたイテレータのテキストを、その属性を
TextAttributeクラスの仕様に従って適用しながら描画します。 |
abstract void |
drawString(String str, float x, float y) |
Graphics2Dコンテキスト内の現在のテキスト属性状態を使用して、指定されたStringによって指定されたテキストを描画します。 |
abstract void |
drawString(String str, int x, int y) |
Graphics2Dコンテキスト内の現在のテキスト属性状態を使用して、指定された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) |
後指定優先適用のルールに従って、この
Graphics2D内のTransformを使用してAffineTransformオブジェクトを構成します。 |
abstract void |
translate(double tx, double ty) |
現在の
Graphics2D Transformを平行移動変換に連結します。 |
abstract void |
translate(int x, int y) |
Graphics2Dコンテキストの原点を現在の座標系内の点(x, y)に平行移動します。 |
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, toStringprotected Graphics2D()
Graphics2Dオブジェクトを構築します。 Graphics2Dは抽象クラスであり、さまざまな出力デバイスのためにサブクラスでカスタマイズされなければならないため、Graphics2Dオブジェクトを直接作成することはできません。 代わりに、Graphics2Dオブジェクトは、ほかのGraphics2Dオブジェクトから取得するか、Componentによって作成するか、あるいはBufferedImageオブジェクトなどのイメージから取得しなければいけません。 public void draw3DRect(int x,
int y,
int width,
int height,
boolean raised)
強調表示効果に使われる色は、現在の色に基づいて指定されます。 結果として得られる矩形は、幅がwidth + 1ピクセル、高さがheight + 1ピクセルの領域をカバーします。 このメソッドは現在のColorのみを使用し、現在のPaintを無視します。
draw3DRect、クラスGraphicsx - 描画される矩形のx座標。y - 描画される矩形のy座標。width - 描画される矩形の幅。height - 描画される矩形の高さ。raised - 矩形が表面から浮き出たように見えるか、または表面がへこんだように見えるかを決定するboolean値。Graphics.fill3DRect(int, int, int, int, boolean)public void fill3DRect(int x,
int y,
int width,
int height,
boolean raised)
Colorによって指定されます。 このメソッドは現在のColorのみを使用し、現在のPaintを無視します。 fill3DRect、クラスGraphicsx - 塗りつぶされる矩形のx座標。y - 塗りつぶされる矩形のy座標。width - 塗りつぶされる矩形の幅。height - 塗りつぶされる矩形の高さ。raised - 矩形が表面から浮き出たように見えるか、または表面に彫り込まれたように見えるかを決定するboolean値。Graphics.draw3DRect(int, int, int, int, boolean)public abstract void draw(Shape s)
Graphics2Dコンテキストの設定を使用して、Shapeの輪郭をストロークで描画します。 適用される描画属性には、Clip、Transform、Paint、Composite、およびStroke属性が含まれます。 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。transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), clip(java.awt.Shape), Graphics.setClip(int, int, int, int)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);
op - 描画前にイメージに適用されるフィルタimg - 描画される指定BufferedImage。 imgがnullである場合、このメソッドは何も行いません。 x - イメージの左上隅が描画されるユーザー空間の位置のx座標y - イメージの左上隅が描画されるユーザー空間の位置の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)public abstract void drawRenderedImage(RenderedImage img, AffineTransform xform)
RenderedImageを描画します。 ユーザー空間からデバイス空間への変換は、Graphics2D内の現在のTransformで実行されます。 指定された変換は、Graphics2Dコンテキスト内の変換属性が適用される前にイメージに適用されます。 適用される描画属性には、Clip、Transform、および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)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 - イメージ空間からユーザー空間への変換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)public abstract void drawString(String str, int x, int y)
Graphics2Dコンテキスト内の現在のテキスト属性状態を使用して、指定されたStringのテキストを描画します。 最初の文字のベースラインは、ユーザー空間内の位置(x, y)にあります。 適用される描画属性には、Clip、Transform、Paint、Font、およびComposite属性が含まれます。 ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。 drawString、クラスGraphicsstr - 描画される文字列x - Stringが描画される位置のx座標y - Stringが描画される位置のy座標NullPointerException - strがnullの場合Graphics.drawBytes(byte[], int, int, int, int), Graphics.drawChars(char[], int, int, int, int)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の場合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)public abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
TextAttributeクラスの仕様に従って適用しながら描画します。
最初の文字のベースラインは、ユーザー空間内の位置(x, y)にあります。 ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。
drawString、クラスGraphicsiterator - テキストが描画されるイテレータx - イテレータのテキストが描画されるx座標y - イテレータのテキストが描画されるy座標NullPointerException - iteratorがnullの場合setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)public abstract void drawString(AttributedCharacterIterator iterator, float x, float y)
TextAttributeクラスの仕様に従って適用しながら描画します。
最初の文字のベースラインは、ユーザー空間内の位置(x, y)にあります。 ヘブライ語やアラビア語などの筆記システムの文字では、グリフは右から左に描画されます。この場合には、指定された座標はベースラインの左端の文字位置にあります。
iterator - テキストが描画されるイテレータx - イテレータのテキストが描画されるx座標y - イテレータのテキストが描画されるy座標NullPointerException - iteratorがnullの場合setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color), setTransform(java.awt.geom.AffineTransform), setComposite(java.awt.Composite), Graphics.setClip(int, int, int, int)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の場合。Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String), 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)public abstract void fill(Shape s)
Graphics2Dコンテキストの設定を使用して、Shapeの内部を塗りつぶします。 適用される描画属性には、Clip、Transform、Paint、およびCompositeが含まれます。 public abstract boolean hit(Rectangle rect, Shape s, boolean onStroke)
Shapeが、デバイス空間内にある指定されたRectangleと交差しているかどうかをチェックします。 onStrokeがfalseの場合、このメソッドは指定されたShapeの内部が指定されたRectangleと交差するかどうかを調べます。 onStrokeがtrueの場合、このメソッドは指定されたShapeの輪郭のStrokeが指定されたRectangleと交差するかどうかを調べます。 考慮される描画属性には、Clip、Transform、およびStrokeの各属性があります。 rect - ヒットを調べるデバイス空間の領域s - ヒットを調べるShapeonStroke - ストロークで描画された形状を調べるか塗りつぶされた形状を調べるかを選択するフラグ。 フラグが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)public abstract GraphicsConfiguration getDeviceConfiguration()
Graphics2Dに関連付けられたデバイス構成を返します。Graphics2Dのデバイス構成。public abstract void setComposite(Composite comp)
Graphics2DコンテキストのCompositeを設定します。 Compositeは、drawImage、drawString、draw、fillなどのすべての描画メソッドで使用されます。 これは、グラフィックス・デバイスでの描画処理中に新しいピクセルが既存のピクセルとどのように結合されるかを指定します。
このGraphics2Dコンテキストが表示画面のComponentに描画されている場合で、CompositeがAlphaCompositeクラスのインスタンスではなくカスタム・オブジェクトであるときは、セキュリティ・マネージャがあればそのcheckPermissionメソッドがAWTPermission("readDisplayPixels")アクセス権で呼び出されます。
comp - 描画に使われるCompositeオブジェクトSecurityException - 画面に描画するためにカスタムCompositeオブジェクトが使用されており、セキュリティ・マネージャが設定されている場合に、セキュリティ・マネージャのcheckPermissionメソッドがこの操作を許可しないとき。Graphics.setXORMode(java.awt.Color), Graphics.setPaintMode(), getComposite(), AlphaComposite, SecurityManager.checkPermission(java.security.Permission), AWTPermissionpublic abstract void setPaint(Paint paint)
Graphics2DコンテキストのPaint属性を設定します。 このメソッドをnull Paintオブジェクトで呼び出しても、このGraphics2Dの現在のPaint属性には影響しません。 paint - 描画プロセスで色を生成するために使われるPaintオブジェクト、またはnullGraphics.setColor(java.awt.Color), getPaint(), GradientPaint, TexturePaintpublic abstract void setStroke(Stroke s)
Graphics2DコンテキストのStrokeを設定します。s - 描画プロセスでShapeをストロークで描画するために使われるStrokeオブジェクトBasicStroke, getStroke()public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
RenderingHintsクラスを参照してください。 hintKey - 設定されるヒントのキー。hintValue - 指定されたヒント・カテゴリの推奨設定を示す値。getRenderingHint(RenderingHints.Key), RenderingHintspublic abstract Object getRenderingHint(RenderingHints.Key hintKey)
RenderingHintsクラスを参照してください。 hintKey - 取得するヒントに対応するキー。RenderingHintsクラスで定義されている。 RenderingHints, setRenderingHint(RenderingHints.Key, Object)public abstract void setRenderingHints(Map<?,?> hints)
hintsに置き換えます。 描画ヒントの既存の値はすべて破棄され、既知のヒントと値の新しいセットが指定されたMapオブジェクトから初期化されます。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。 hints - 設定される描画ヒントgetRenderingHints(), RenderingHintspublic abstract void addRenderingHints(Map<?,?> hints)
Mapオブジェクトにある描画ヒントの値だけが変更されます。 指定されたオブジェクトにない推奨設定は変更されません。 Hintカテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。 いくつかの共通のキーと値の定義については、RenderingHintsクラスを参照してください。 hints - 設定される描画ヒントRenderingHintspublic abstract RenderingHints getRenderingHints()
RenderingHintsクラスを参照してください。 RenderingHintsのインスタンスへの参照。RenderingHints, setRenderingHints(Map)public abstract void translate(int x,
int y)
Graphics2Dコンテキストの原点を現在の座標系内の点(x, y)に平行移動します。 Graphics2Dコンテキストを修正して、新しい原点がGraphics2Dコンテキストの元の座標系の点(x, y)に対応するようにします。 このグラフィックス・コンテキストでそれ以降の描画操作で使用される座標はすべて、この新しい原点を基準にします。 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軸に沿って移動する距離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 - 回転の角度(ラジアン)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座標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座標が以前の描画操作を基準に乗算される量。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軸方向にシフトするための乗数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), AffineTransformpublic 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メソッドから取得されたAffineTransformtransform(java.awt.geom.AffineTransform), getTransform(), AffineTransformpublic abstract AffineTransform getTransform()
Graphics2Dコンテキスト内の現在のTransformのコピーを返します。Graphics2Dコンテキスト内の現在のAffineTransform。transform(java.awt.geom.AffineTransform), setTransform(java.awt.geom.AffineTransform)public abstract Paint getPaint()
Graphics2Dコンテキストの現在のPaintを返します。Graphics2D Paint。setPaint(java.awt.Paint), Graphics.setColor(java.awt.Color)public abstract Composite getComposite()
Graphics2Dコンテキスト内の現在のCompositeを返します。Graphics2D Composite。setComposite(java.awt.Composite)public abstract void setBackground(Color color)
Graphics2Dコンテキストの背景色を設定します。 バックグラウンド・カラーは、領域をクリアするために使われます。 Graphics2DをComponent用に作成すると、バックグラウンド・カラーがComponentから継承されます。 Graphics2Dコンテキストでのバックグラウンド・カラーを設定しても、それ以降のclearRect呼出しに作用するだけで、Componentのバックグラウンド・カラーには影響を及ぼしません。 Componentのバックグラウンドを変更するには、Componentの適切なメソッドを使用します。 color - 以降のclearRectの呼出しで使用されるバックグラウンド・カラーgetBackground(), Graphics.clearRect(int, int, int, int)public abstract Color getBackground()
Graphics2D Color。setBackground(java.awt.Color)public abstract Stroke getStroke()
Graphics2Dコンテキスト内の現在のStrokeを返します。Graphics2D Stroke。setStroke(java.awt.Stroke)public abstract void clip(Shape s)
Clipを指定されたShapeの内部と交差させ、そのClipを結果として得られる共通部分に設定します。 指定されたShapeは、現在のClipと交差する前に、現在のGraphics2D Transformを使って変換されます。 このメソッドを使うと、現在のClipを小さくできます。 Clipを大きくするには、setClipメソッドを使います。 このメソッドによって変更されたユーザー・クリップは、デバイスの境界および可視性と関連したクリッピングとは無関係です。 これまでに設定されているクリップがない場合、またはsetClipにnull引数を使ってクリップがクリアされている場合は、指定されたShapeが新しいユーザー・クリップになります。 s - 現在のClipと交差するShape。 sがnullの場合、このメソッドは現在のClipをクリアする。 public abstract FontRenderContext getFontRenderContext()
Graphics2Dコンテキスト内のFontの描画コンテキストを取得します。 FontRenderContextは、アンチエイリアスや部分メトリックスなどのアプリケーション・ヒントのほか、ターゲット・デバイスに特有の解像度(dpi)などの情報をカプセル化します。 こうした情報は、FontやTextLayoutなどの文字体裁のフォーマットを実行するオブジェクトの使用時にアプリケーションによって提供されます。 この情報はまた、各種描画ヒントがテキスト描画に適用されたときに、それ自体のレイアウトを実行し、有効幅や行の高さなど、グリフの各種特性の正確な計測を必要とするアプリケーションによって提供されなければいけません。 FontRenderContext, Font.createGlyphVector(java.awt.font.FontRenderContext, java.lang.String), TextLayout バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。