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, toString
protected Graphics2D()
Graphics2D
オブジェクトを構築します。 Graphics2D
は abstract クラスであり、さまざまな出力デバイスのためにサブクラスでカスタマイズされなければならないため、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
、クラス: Graphics
x
- 描画される矩形の 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
、クラス: Graphics
x
- 塗りつぶされる矩形の 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
、クラス: Graphics
str
- 描画される文字列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
- 描画される String
x
- 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
、クラス: Graphics
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 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
- 描画される GlyphVector
x
- グリフが描画されるユーザー空間の 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
- ヒットを調べる 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)
public abstract GraphicsConfiguration getDeviceConfiguration()
Graphics2D
に関連付けられたデバイス構成を返します。Graphics2D
のデバイス構成。public abstract void setComposite(Composite comp)
Graphics2D
コンテキストの Composite
を設定します。 Composite
は、drawImage
、drawString
、draw
、fill
などのすべての描画メソッドで使用されます。 Composite は、グラフィックスデバイスでの描画処理中に新しいピクセルが既存のピクセルとどのように結合されるかを指定します。
この 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)
, AWTPermission
public abstract void setPaint(Paint paint)
Graphics2D
コンテキストの Paint
属性を設定します。 このメソッドを null
Paint
オブジェクトで呼び出しても、この Graphics2D
の現在の Paint
属性には影響しません。paint
- 描画プロセスで色を生成するために使われる Paint
オブジェクト、または null
Graphics.setColor(java.awt.Color)
, getPaint()
, GradientPaint
, TexturePaint
public 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)
, RenderingHints
public 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()
, RenderingHints
public abstract void addRenderingHints(Map<?,?> hints)
Map
オブジェクトにある描画ヒントの値だけが変更されます。指定されたオブジェクトにない推奨設定は変更されません。Hint カテゴリには、描画品質を制御することと、描画プロセスでの描画速度と描画品質との全体的な妥協点を制御することが含まれます。いくつかの共通のキーと値の定義については、RenderingHints
クラスを参照してください。hints
- 設定される描画ヒントRenderingHints
public 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)
, AffineTransform
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
transform(java.awt.geom.AffineTransform)
, getTransform()
, AffineTransform
public 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, 2013, Oracle and/or its affiliates. All rights reserved.