public class RenderingHints extends Object implements Map<Object,Object>, Cloneable
RenderingHints
クラスは、アプリケーションが、描画およびイメージ操作サービスを実行するほかのクラスによって使用されるアルゴリズムの選択を入力できるようにする、キーとそれに関連付けられた値のコレクションを定義および管理します。Graphics2D
クラス、およびBufferedImageOp
とRasterOp
を実装するクラスのすべてで、RenderingHints
キーとそれに関連付けられた値を個別にまたはグループで取得するメソッドや、場合によってはそれらを設定するメソッドを提供します。これらの実装により描画またはイメージ操作の演算を実行するときは、呼出し元が要求したRenderingHints
の値を調べ、それに応じて使用されるアルゴリズムの能力が最高になるようにアルゴリズムを調整するようにしてください。
これらのキーと値はヒントなので、ある特定の実装で、後述する可能なすべての選択肢をサポートしたり、そのアルゴリズムの選択肢を修正する要求に対応できるようにしたりする必要はありません。さまざまなヒント・キーの値が相互に作用して、ある状況ではその特定のキーのすべてのバリアントがサポートされる一方で、ほかのキーと関連付けられた値が変更されると実装がより制限される場合もあります。たとえば一部の実装では、アンチエイリアス・ヒントがオフのときは数種類のディザリングを提供できますが、オンのときはディザリングをほとんど制御できません。サポートされるキーとヒントの完全なセットは、描画先によって異なる場合があります。これは、ランタイムでは画面やBufferedImage
オブジェクトへの描画時、または印刷時に、様々な基本モジュールを使用することがあるためです。
実装では、ヒントを完全に無視してもかまいませんが、要求にできるだけ近い実装アルゴリズムを使用するようにしてください。関連付けられたヒント・キーに任意の値が使用されるときに特定のアルゴリズムが実装でサポートされる場合、そのヒント・キーの値がそのアルゴリズムを指定する正確な値であるときには、そのようにすることが最低限必要です。
ヒントを制御するために使用されるキーは、すべて関連付けられたRenderingHints.Key
クラスをサブクラス化した特殊な値です。一般的なヒントの多くはこのクラスの静的定数として後述しますが、すべてを網羅しているわけではありません。その他のヒントは、ほかのパッケージでKey
クラスをサブクラス化する新しいオブジェクトを定義して、関連する値を定義することにより作成できます。
修飾子と型 | クラスと説明 |
---|---|
static class |
RenderingHints.Key
描画およびイメージング・パイプライン内のさまざまなアルゴリズム選択を制御するために
RenderingHints クラスとともに使用される、すべてのキーの基底型を定義します。 |
修飾子と型 | フィールドと説明 |
---|---|
static RenderingHints.Key |
KEY_ALPHA_INTERPOLATION
アルファ補間のヒント・キーです。
|
static RenderingHints.Key |
KEY_ANTIALIASING
アンチエイリアスのヒント・キーです。
|
static RenderingHints.Key |
KEY_COLOR_RENDERING
カラー描画のヒント・キーです。
|
static RenderingHints.Key |
KEY_DITHERING
ディザリングのヒント・キーです。
|
static RenderingHints.Key |
KEY_FRACTIONALMETRICS
フォント部分メトリックスのヒント・キーです。
|
static RenderingHints.Key |
KEY_INTERPOLATION
補間のヒント・キーです。
|
static RenderingHints.Key |
KEY_RENDERING
描画ヒント・キーです。
|
static RenderingHints.Key |
KEY_STROKE_CONTROL
ストローク正規化コントロールのヒント・キーです。
|
static RenderingHints.Key |
KEY_TEXT_ANTIALIASING
テキスト・アンチエイリアスのヒント・キーです。
|
static RenderingHints.Key |
KEY_TEXT_LCD_CONTRAST
LCDテキスト・コントラストの描画ヒント・キーです。
|
static Object |
VALUE_ALPHA_INTERPOLATION_DEFAULT
アルファ補間のヒント値で、パフォーマンスと次との兼ね合いが適切になるように、実装によってアルファ・ブレンディング・アルゴリズムが選択されます。
|
static Object |
VALUE_ALPHA_INTERPOLATION_QUALITY
アルファ補間のヒント値で、精度と表示品質の設定に合わせてアルファ・ブレンディング・アルゴリズムが選択されます。
|
static Object |
VALUE_ALPHA_INTERPOLATION_SPEED
アルファ補間のヒント値で、計算速度の設定に合わせてアルファ・ブレンディング・アルゴリズムが選択されます。
|
static Object |
VALUE_ANTIALIAS_DEFAULT
アンチエイリアスのヒント値で、描画は実装で選択されたデフォルトのアンチエイリアス・モードを使って行われます。
|
static Object |
VALUE_ANTIALIAS_OFF
アンチエイリアスのヒント値で、描画はアンチエイリアスなしで行われます。
|
static Object |
VALUE_ANTIALIAS_ON
アンチエイリアスのヒント値で、描画はアンチエイリアスを使って行われます。
|
static Object |
VALUE_COLOR_RENDER_DEFAULT
カラー描画ヒント値で、実装で選択された色変換の計算を実行し、パフォーマンスと精度の間で最適な兼ね合いを表現します。
|
static Object |
VALUE_COLOR_RENDER_QUALITY
カラー描画ヒント値で、精度と表示品質がもっとも高い色変換の計算を実行します。
|
static Object |
VALUE_COLOR_RENDER_SPEED
カラー描画ヒント値で、出力デバイスの形式へのもっとも高速な色変換を実行します。
|
static Object |
VALUE_DITHER_DEFAULT
ディザリングのヒント値で、ディザリングに実装で選択されたデフォルトを使用します。
|
static Object |
VALUE_DITHER_DISABLE
ディザリングのヒント値で、幾何学的図形の描画時にディザリングを行いません。
|
static Object |
VALUE_DITHER_ENABLE
ディザリングのヒント値で、必要に応じて幾何学的図形の描画時にディザリングを行います。
|
static Object |
VALUE_FRACTIONALMETRICS_DEFAULT
フォント部分メトリックスのヒント値で、文字グリフは、実装によって選択された精度で配置されます。
|
static Object |
VALUE_FRACTIONALMETRICS_OFF
フォント部分メトリックスのヒント値で、文字グリフは、ピクセル境界に丸められた有効幅で配置されます。
|
static Object |
VALUE_FRACTIONALMETRICS_ON
フォント部分メトリックスのヒント値で、文字グリフは、サブピクセル精度で配置されます。
|
static Object |
VALUE_INTERPOLATION_BICUBIC
補間のヒント値。イメージ内の隣接する9つの整数座標サンプルのカラー・サンプルが、
X とY の両方で3次関数を使用して補間されることによりカラー・サンプルが生成されます。 |
static Object |
VALUE_INTERPOLATION_BILINEAR
補間のヒント・キーで、イメージ内でもっとも近い隣接する4つの整数座標サンプルのカラー・サンプルが線形に補間されて、カラー・サンプルが生成されます。
|
static Object |
VALUE_INTERPOLATION_NEAREST_NEIGHBOR
補間のヒント・キーで、イメージ内でもっとも近い隣接する整数座標サンプルのカラー・サンプルが使用されます。
|
static Object |
VALUE_RENDER_DEFAULT
描画ヒント値で、パフォーマンスと次との兼ね合いが適切になるように、実装によって描画アルゴリズムが選択されます。
|
static Object |
VALUE_RENDER_QUALITY
描画ヒント値で、出力品質の設定に合わせて描画アルゴリズムが選択されます。
|
static Object |
VALUE_RENDER_SPEED
描画ヒント値で、出力速度の設定に合わせて描画アルゴリズムが選択されます。
|
static Object |
VALUE_STROKE_DEFAULT
ストローク正規化コントロールのヒント値で、実装での兼ね合いに応じて、幾何学的図形は修正されることも、そのままになることもあります。
|
static Object |
VALUE_STROKE_NORMALIZE
ストローク正規化コントロールのヒント値で、線の一貫性または間隔、および全体的な美観を改善するために、幾何学的図形は正規化されなければいけません。
|
static Object |
VALUE_STROKE_PURE
ストローク正規化コントロールのヒント値で、幾何学的図形は修正されずに、サブピクセル精度で描画されなければいけません。
|
static Object |
VALUE_TEXT_ANTIALIAS_DEFAULT
テキスト・アンチエイリアスのヒント値。テキスト描画は、
KEY_ANTIALIASING ヒントか、または実装によって選択されたデフォルトに従って実行されます。 |
static Object |
VALUE_TEXT_ANTIALIAS_GASP
テキスト・アンチエイリアスのヒント値。テキスト描画は、ポイント・サイズごとに
VALUE_TEXT_ANTIALIAS_ON またはVALUE_TEXT_ANTIALIAS_OFF のどちらを適用するかを指定するフォント・リソース内の情報を使用するように要求されます。 |
static Object |
VALUE_TEXT_ANTIALIAS_LCD_HBGR
テキスト・アンチエイリアスのヒント値で、LCDディスプレイに適した状態でテキストを表示するように要求します。サブピクセルは、左から右へB、G、Rの順に並ぶため、サブピクセルの水平方向の解像度はフル・ピクセルの水平方向の解像度(HBGR)の場合の3倍になります。
|
static Object |
VALUE_TEXT_ANTIALIAS_LCD_HRGB
テキスト・アンチエイリアスのヒント値で、LCDディスプレイに適した状態でテキストを表示するように要求します。サブピクセルは、左から右へR、G、Bの順に並ぶため、サブピクセルの水平方向の解像度はフル・ピクセルの水平方向の解像度(HRGB)の場合の3倍になります。
|
static Object |
VALUE_TEXT_ANTIALIAS_LCD_VBGR
テキスト・アンチエイリアスのヒント値で、LCDディスプレイに適した状態でテキストを表示するように要求します。サブピクセルの構成は、上から下へB、G、Rの順に並ぶため、サブピクセルの垂直方向の解像度はフル・ピクセルの垂直方向の解像度(VBGR)の場合の3倍になります。
|
static Object |
VALUE_TEXT_ANTIALIAS_LCD_VRGB
テキスト・アンチエイリアスのヒント値で、LCDディスプレイに適した状態でテキストを表示するように要求します。サブピクセルの構成は、上から下へR、G、Bの順に並ぶため、サブピクセルの垂直方向の解像度はフル・ピクセルの垂直方向の解像度(VRGB)の場合の3倍になります。
|
static Object |
VALUE_TEXT_ANTIALIAS_OFF
テキスト・アンチエイリアスのヒント値で、テキスト描画はアンチエイリアスを一切使わずに行われます。
|
static Object |
VALUE_TEXT_ANTIALIAS_ON
テキスト・アンチエイリアスのヒント値で、テキスト描画はなんらかの形式のアンチエイリアスを使って行われます。
|
コンストラクタと説明 |
---|
RenderingHints(Map<RenderingHints.Key,?> init)
キーと値を指定されたMapオブジェクト(nullの場合もある)から初期化して、オブジェクトを新しく構築します。
|
RenderingHints(RenderingHints.Key key, Object value)
指定されたキーと値のペアでオブジェクトを新しく作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
void |
add(RenderingHints hints)
指定された
RenderingHints オブジェクトのすべてのキーとそれに対応する値をこのRenderingHints オブジェクトに追加します。 |
void |
clear()
すべてのキーと値のペアのこの
RenderingHints オブジェクトをクリアします。 |
Object |
clone()
この
RenderingHints オブジェクトと同じ内容を持つ、このRenderingHints オブジェクトの複製を作成します。 |
boolean |
containsKey(Object key)
この
RenderingHints に、指定されたキーのマッピングが含まれる場合はtrue を返します。 |
boolean |
containsValue(Object value)
このRenderingHintsが指定された値に1つ以上のキーをマッピングしている場合にtrueを返します。
|
Set<Map.Entry<Object,Object>> |
entrySet()
この
RenderingHints に含まれているマッピングのSet ビューを返します。 |
boolean |
equals(Object o)
指定された
Object をこのRenderingHints と比較して等しいかどうかを調べます。 |
Object |
get(Object key)
指定されたキーがマッピングされている値を返します。
|
int |
hashCode()
この
RenderingHints のハッシュ・コード値を返します。 |
boolean |
isEmpty()
この
RenderingHints にキーと値のマッピングが含まれていない場合はtrue を返します。 |
Set<Object> |
keySet()
この
RenderingHints に含まれているキーのSet ビューを返します。 |
Object |
put(Object key, Object value)
指定された
key をこのRenderingHints オブジェクト内の指定されたvalue にマップします。 |
void |
putAll(Map<?,?> m)
指定された
Map のすべてのマッピングをこのRenderingHints にコピーします。 |
Object |
remove(Object key)
この
RenderingHints オブジェクトからキーとそれに対応する値を削除します。 |
int |
size()
この
RenderingHints 内のキーと値のマッピングの数を返します。 |
String |
toString()
この
RenderingHints オブジェクトのキーから値へのマッピングを含む、ハッシュ・マップの比較的長い文字列表現を返します。 |
Collection<Object> |
values()
この
RenderinHints に含まれている値のCollection ビューを返します。 |
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
public static final RenderingHints.Key KEY_ANTIALIASING
ANTIALIASING
ヒントは、Graphics2D
オブジェクトの幾何学的図形の描画メソッドで、形状の端でのエイリアシング・アーティファクトを減らすよう試みるかどうかを制御します。
一般的なアンチエイリアス・アルゴリズムの動作では、形状の推定される部分ピクセル・カバレージに応じて、形状の境界に沿ったピクセルの既存の色を、要求された塗りつぶしペイントとブレンドします。
このヒントでは、次の値を使用できます。
public static final Object VALUE_ANTIALIAS_ON
KEY_ANTIALIASING
public static final Object VALUE_ANTIALIAS_OFF
KEY_ANTIALIASING
public static final Object VALUE_ANTIALIAS_DEFAULT
KEY_ANTIALIASING
public static final RenderingHints.Key KEY_RENDERING
RENDERING
ヒントは汎用ヒントであり、アルゴリズムの選択で速度と品質のどちらを重視するか、その兼ね合いを評価するときに、概要レベルの推奨内容を提供します。このヒントは、描画やイメージ操作の演算で参照されることもありますが、判断する際は、通常、その他のより詳細なヒントがこのヒントよりも優先されます。
このヒントでは、次の値を使用できます。
public static final Object VALUE_RENDER_SPEED
KEY_RENDERING
public static final Object VALUE_RENDER_QUALITY
KEY_RENDERING
public static final Object VALUE_RENDER_DEFAULT
KEY_RENDERING
public static final RenderingHints.Key KEY_DITHERING
DITHERING
ヒントは、カラー解像度が限定されている描画先に色を格納するときに、その色を近似する程度を制御します。
一部の描画先では、サポートされている色の選択肢の数が限定されているため、描画演算中に色の完全なスペクトルを正確に表すことができない場合があります。このような描画先に対してDITHERING
ヒントは、サポートされる色のうち要求された色にもっとも近い色で単一ピクセル値を均一に塗りつぶして描画するか、またはその色を最適に近似するために組み合わせる色のパターンで形状を塗りつぶすかを制御します。
このヒントでは、次の値を使用できます。
public static final Object VALUE_DITHER_DISABLE
KEY_DITHERING
public static final Object VALUE_DITHER_ENABLE
KEY_DITHERING
public static final Object VALUE_DITHER_DEFAULT
KEY_DITHERING
public static final RenderingHints.Key KEY_TEXT_ANTIALIASING
TEXT_ANTIALIASING
ヒントは、形状の描画に使用する設定とは独立して、テキストのアンチエイリアス・アルゴリズムの使用を制御できます。アプリケーションでは、テキストだけにアンチエイリアスを使用し、その他の形状にはアンチエイリアスを使用しない場合があります。また、テキストのエイリアシング・アーティファクトを減らすアルゴリズムのほうが、汎用の描画処理用に開発されたアルゴリズムよりも高性能である場合もあります。そのため、このヒント・キーでは追加の値を提供して、テキスト固有のアルゴリズムについて一部の選択肢を制御できます。DEFAULT
の状態のままである場合、一般にこのヒントは、通常のKEY_ANTIALIASING
ヒント・キーの値に従います。
このヒントでは、次の値を使用できます。
public static final Object VALUE_TEXT_ANTIALIAS_ON
KEY_TEXT_ANTIALIASING
public static final Object VALUE_TEXT_ANTIALIAS_OFF
KEY_TEXT_ANTIALIASING
public static final Object VALUE_TEXT_ANTIALIAS_DEFAULT
KEY_ANTIALIASING
ヒントか、または実装によって選択されたデフォルトに従って実行されます。KEY_TEXT_ANTIALIASING
public static final Object VALUE_TEXT_ANTIALIAS_GASP
VALUE_TEXT_ANTIALIAS_ON
またはVALUE_TEXT_ANTIALIAS_OFF
のどちらを適用するかを指定するフォント・リソース内の情報を使用するように要求されます。
TrueTypeフォントは、通常この情報を「gasp」表で提供します。この情報がないと、特定のフォントおよびサイズの動作は、実装のデフォルトによって決まります。
注: 通常、フォントの設計時は、もっとも一般的なユーザー・インタフェースのポイント・サイズに合わせて、フォントのヒント値を慎重に設定します。その結果「gasp」表は、そのサイズの場合にだけヒントを使用し、「平滑化」は使用しないことを指定する可能性があります。そのため多くの場合、結果として得られるテキスト表示は、VALUE_TEXT_ANTIALIAS_OFF
と同等です。これは予期していませんが適切な動作です。
一貫性を保つために複数の物理フォントで構成される論理フォントでは、構成するフォント全体でもっとも適切な設定が使用されます。
KEY_TEXT_ANTIALIASING
public static final Object VALUE_TEXT_ANTIALIAS_LCD_HRGB
注:
いずれかのLCDテキスト・ヒント値を適用するかどうかを選択するときに、実装では、次のようにさまざまな点が考慮されることがあります。転送先でピクセルあたり15ビット(つまり色成分あたり5ビット)以上の色深度にする必要性、埋込みビットマップのほうが良好な結果になる場合があるなどのフォントの特性、ローカルではないネットワーク化された表示デバイスへの表示時は適切なプロトコルが使用可能な場合にだけデバイスを有効にする、非常に高解像度な描画を実行する場合や転送先デバイスが適切でない(印刷時など)場合はヒントを無視するなどです。
これらのヒントは、ソフトウェア・イメージへの描画時に等しく適用できますが、テキストは特定のサブピクセル構成に合わせて描画されるため、そのようなイメージは一般的な書出しに適していない可能性があります。また、損失のあるイメージや、GIFのように色数が限られているイメージ形式を選択することは、適切ではありません。そのため、同じ構成の表示デバイスに描画することだけを目的とするイメージでないかぎり、VALUE_TEXT_ANTIALIAS_ON
などのその他のテキスト・アンチエイリアスのヒントのほうが適している場合があります。
使用しているLCDディスプレイに一致しない値を選択すると、テキスト品質が低下する可能性があります。LCDディスプレイと同じ特性を持たない表示デバイス(CRTなど)の場合、全体的な効果は標準のテキスト・アンチエイリアスに似ている場合がありますが、色の変化によって品質が低下することがあります。アナログ接続されたLCDディスプレイでも、CRTと同様に、標準のテキスト・アンチエイリアスに比べて利点はほとんどない可能性があります。
つまり最適な結果を得るには、デジタル・ディスプレイ・コネクタでLCDディスプレイを使用し、適切なサブピクセル設定を指定してください。
KEY_TEXT_ANTIALIASING
public static final Object VALUE_TEXT_ANTIALIAS_LCD_HBGR
VALUE_TEXT_ANTIALIAS_LCD_HRGB
を参照してください。KEY_TEXT_ANTIALIASING
public static final Object VALUE_TEXT_ANTIALIAS_LCD_VRGB
VALUE_TEXT_ANTIALIAS_LCD_HRGB
を参照してください。KEY_TEXT_ANTIALIASING
public static final Object VALUE_TEXT_ANTIALIAS_LCD_VBGR
VALUE_TEXT_ANTIALIAS_LCD_HRGB
を参照してください。KEY_TEXT_ANTIALIASING
public static final RenderingHints.Key KEY_TEXT_LCD_CONTRAST
VALUE_TEXT_ANTIALIAS_LCD_HRGB
など)と組み合わせて使用するときにテキストのコントラスト調整として使用されるInteger
オブジェクトです。
KEY_TEXT_ANTIALIASING
public static final RenderingHints.Key KEY_FRACTIONALMETRICS
FRACTIONALMETRICS
ヒントは、個別の文字グリフの配置で、フォントのスケーリングされた文字の有効幅のサブピクセル精度を考慮するかどうか、またはそのような有効幅ベクトルをデバイス全体のピクセル数である整数値に丸めるかを制御します。このヒントは、グリフを配置するために使用される精度の程度だけを推奨し、グリフの実際のラスター化やピクセル境界を一致するように修正するかどうかについては指定または推奨しません。
画面のような低解像度デバイスにテキストを描画する場合は、文字グリフの形状およびメトリックスの高品質で非常に正確な定義を個々のデバイス・ピクセルに一致させる必要があるため、いくつかの丸め演算を呼び出す必要があります。理論的には、テキスト・レイアウト時のグリフの配置は、ポイント・サイズに応じてフォントの設計メトリックスをスケーリングすることで計算されます。ただし、スケーリングされた有効幅は、ピクセルの整数値であるとはかぎりません。スケーリングされたこれらの設計メトリックスに応じてグリフがサブピクセル精度で配置される場合、理論的にはサブピクセルの原点と考えられる位置ごとにラスター化を調整する必要があります。
ただし、テキスト・レイアウト時に正確なサブピクセル原点に対してカスタマイズされた各グリフをスケーリングすることは非常に負荷が高いため、テキストをレイアウトする場合は、通常は整数デバイス位置を基にした単純化された座標系が使用されます。グリフのラスター化とスケーリングされた有効幅の両方が調整されて、テキストが生成されます。このテキストは、デバイスの解像度で適切に表示され、グリフ間の距離は一貫した整数ピクセル距離になるので、グリフの間隔が均等でばらつきがなく読みやすくなります。
ラスター化されたグリフの有効幅を整数距離に丸める処理によって、各グリフの調整後の幅でのわずかな差が累積するために、文字の密度とテキスト文字列の全体の長さは理論上の設計寸法とは異なります。具体的な差はグリフごとに異なり、グリフによって理論上の設計寸法よりも広くなったり狭くなったりします。そのため、文字密度と長さの全体的な差は、フォント、対象とする具体的なデバイス解像度、描画される文字列を表現するために選択されたグリフなど、さまざまな要因によって変化します。結果として、同じ文字列を複数のデバイス解像度で描画すると、文字列全体について広範囲に変化するメトリックスが得られることがあります。
FRACTIONALMETRICS
を有効にすると、本来のフォント設計メトリックスがポイント・サイズまでスケーリングされて、サブピクセル精度でレイアウトに使用されます。そのため、長い文字列ではグリフの平均密度と全体の長さは、フォントの理論上の設計に非常に近くなりますが、グリフ原点のサブピクセルの累積をデバイス・ピクセル・グリッドに合わせる方法によっては、文字の各ペアの距離が常に均等になるとはかぎらないため、読みやすさに影響する可能性があります。幅広い出力解像度で均等であることが必要なテキスト・レイアウトが実行されているときは、このヒントを有効にすることが望ましい場合があります。特に、最終的には高解像度のプリンタや写植装置で描画する出力について、テキストのレイアウトを画面などの低解像度デバイスでプレビューしているような状況では、このヒントを使用するのが望ましい方法です。
無効にすると、スケーリングされた設計メトリックスはレイアウトで整数距離に丸め処理または調整されます。グリフの各ペア間の距離は、デバイス上でより均一になりますが、長い文字列の密度や合計の長さは、フォント設計者が理論的に意図したものとは一致しなくなる可能性があります。一般にこのヒントを無効にすると、コンピュータのモニターのような低解像度デバイスでは読みやすい結果が得られます。
このキーでは、次の値を使用できます。
public static final Object VALUE_FRACTIONALMETRICS_OFF
KEY_FRACTIONALMETRICS
public static final Object VALUE_FRACTIONALMETRICS_ON
KEY_FRACTIONALMETRICS
public static final Object VALUE_FRACTIONALMETRICS_DEFAULT
KEY_FRACTIONALMETRICS
public static final RenderingHints.Key KEY_INTERPOLATION
INTERPOLATION
ヒントは、イメージの描画演算中にイメージ・ピクセルがフィルタ処理または再抽出される方法を制御します。
イメージは、整数座標位置でカラー・サンプルを提供するように暗黙的に定義されます。イメージが描画先でスケーリングされずに垂直方向に描画される場合、どのイメージ・ピクセル・マップをどのデバイス・ピクセルに描画するかの選択は明確であり、イメージの整数座標位置のサンプルは、デバイス・ピクセル・グリッドの対応する整数位置のピクセルに1対1で転送されます。イメージがスケーリング、回転、またはその他の変形が加えられた座標系で描画され、そのあとデバイス・ピクセル座標からイメージへの逆マッピングが行われると、指定されたイメージ・サンプルの整数位置の間に存在する連続した座標に対して、どのカラー・サンプルを使用するかという問題が生じることがあります。補間アルゴリズムは、周囲の整数座標のカラー・サンプルに基づいてイメージで連続した座標のカラー・サンプルを提供する関数を定義します。
このヒントでは、次の値を使用できます。
public static final Object VALUE_INTERPOLATION_NEAREST_NEIGHBOR
イメージを拡大すると、それに応じてブロック状になります。イメージを縮小すると、ソース・ピクセルの色は変更されずに使用されるか、または出力表現では完全にスキップされます。
KEY_INTERPOLATION
public static final Object VALUE_INTERPOLATION_BILINEAR
イメージを拡大しても、NEAREST_NEIGHBOR
の場合に見られるようなブロック状の端はイメージ内の色の間にはありません。ただしブレンドすると、サンプルに沿って並んだ水平方向および垂直方向の端に沿ってわずかに不連続が見られることがあります。これはサンプルの一方の側から他方の側へ補間の傾きが突然変化するために生じます。イメージを縮小すると、各出力ピクセルは最高で4つのイメージ・ピクセルから色情報を受け取るため、結果として得られる出力にカラー・サンプルが表現されるイメージ・ピクセルが多くなります。
KEY_INTERPOLATION
public static final Object VALUE_INTERPOLATION_BICUBIC
X
とY
の両方で3次関数を使用して補間されることによりカラー・サンプルが生成されます。概念上、イメージの表示はBILINEAR
アルゴリズムを使用した表示と非常に似ています。ただし、サンプル間を結び付ける色変化は、曲線になり、サンプル境界間を交差するために傾きの連続性が向上します。
イメージを拡大してもブロック状の端はなく、BILINEAR
を使用した場合よりも、補間はなめらかになり、元のイメージの端がより的確に描かれます。イメージを縮小しても、元のイメージの元のカラー・サンプルの色情報が維持され表現される量が多くなります。
KEY_INTERPOLATION
public static final RenderingHints.Key KEY_ALPHA_INTERPOLATION
ALPHA_INTERPOLATION
ヒントは汎用ヒントであり、アルファ・ブレンディング・アルゴリズムの選択で速度と品質のどちらを重視するか、その兼ね合いを評価するときに、概要レベルの推奨内容を提供します。
このヒントでは、精度をいくらか犠牲にして高速なルックアップ表や低精度のSIMD命令を使用するアルファ・ブレンディング計算の選択を制御できます。また、ピクセル単位の計算がさらに発生するデメリットがありますが、線形な視覚効果を高めるために、計算中に色やアルファの値を線形カラー・スペースに変換するかどうかについても制御できます。
このヒントでは、次の値を使用できます。
public static final Object VALUE_ALPHA_INTERPOLATION_SPEED
KEY_ALPHA_INTERPOLATION
public static final Object VALUE_ALPHA_INTERPOLATION_QUALITY
KEY_ALPHA_INTERPOLATION
public static final Object VALUE_ALPHA_INTERPOLATION_DEFAULT
KEY_ALPHA_INTERPOLATION
public static final RenderingHints.Key KEY_COLOR_RENDERING
COLOR_RENDERING
ヒントは、描画先イメージまたは表面に色を格納するときの近似および変換の精度を制御します。
描画またはイメージ操作の演算によって、描画先に格納される必要のあるカラー値が生成されるときに、描画先イメージまたは表面への格納に適した形式にその色を変換する必要があります。色成分をビット表現に変換して適切な順序で並べるか、またはデータを描画先メモリーに格納する前に色のルックアップ表に対するインデックスを選択することが最低限必要です。このような最低限の変換を行わないと、描画先のデータが表現する値がランダムや不正確になったり、場合によってはサポートされない値になったりします。描画演算の結果をもっとも一般的な描画先の色形式にすばやく変換するアルゴリズムは、広く知られており、実行するのに最適です。
描画先に色を格納するためにもっとも基本的な色形式変換を実行するだけでは、描画元と描画先のColorSpace
やその他の要因(ガンマ補正の線形性など)の較正での差が無視される可能性があります。描画元と描画先のColorSpace
が同一でないかぎり、表現されている色の精度を最大限考慮して描画演算を適切に実行するには、描画元の色がデバイス非依存のColorSpace
に変換され、その結果が描画先のColorSpace
に逆変換されなければいけません。さらに、複数のソースの色をブレンドするような計算が描画演算中に実行される場合、計算される値と、出力デバイスの応答曲線に対する目による認知との間に対応関係を設定するために中間のデバイス非依存のColorSpace
が選択されると、視覚上のわかりやすさを向上させることができます。
このヒントでは、次の値を使用できます。
public static final Object VALUE_COLOR_RENDER_SPEED
KEY_COLOR_RENDERING
public static final Object VALUE_COLOR_RENDER_QUALITY
KEY_COLOR_RENDERING
public static final Object VALUE_COLOR_RENDER_DEFAULT
KEY_COLOR_RENDERING
public static final RenderingHints.Key KEY_STROKE_CONTROL
STROKE_CONTROL
ヒントは、各種の目的で描画される形状の幾何学的図形の変更を描画実装が変更しなければならないかどうか、または変更できるかどうかを制御します。
実装によっては、最適化されたプラットフォーム描画ライブラリを使用できることがあります。これは、そのプラットフォームでの従来のソフトウェア描画アルゴリズムよりも高速である可能性がありますが、浮動小数点座標をサポートしていない可能性もあります。また、幅の広い線の幅や間隔がより均等になるようにパスの座標に影響を及ぼす高度なアルゴリズムが実装されていることもあります。
どのような種類であってもパスの変更や「正規化」を実行する場合は、どの方向にも座標を半ピクセル以上移動しないでください。
このヒントでは、次の値を使用できます。
public static final Object VALUE_STROKE_DEFAULT
KEY_STROKE_CONTROL
public static final Object VALUE_STROKE_NORMALIZE
KEY_STROKE_CONTROL
public static final Object VALUE_STROKE_PURE
KEY_STROKE_CONTROL
public RenderingHints(Map<RenderingHints.Key,?> init)
init
- ヒントを初期化するキーと値のペアのマップ。オブジェクトを空にする場合はnullpublic RenderingHints(RenderingHints.Key key, Object value)
key
-特定のヒント・プロパティのキーvalue
- key
で指定されたヒント・プロパティの値public int size()
RenderingHints
内のキーと値のマッピングの数を返します。public boolean isEmpty()
RenderingHints
にキーと値のマッピングが含まれていない場合はtrue
を返します。public boolean containsKey(Object key)
RenderingHints
に、指定されたキーのマッピングが含まれる場合はtrue
を返します。containsKey
、インタフェース: Map<Object,Object>
key
- このRenderingHints
内にあるかどうかが判定されるキー。RenderingHints
に含まれている場合はtrue
。ClassCastException
- キーをRenderingHints.Key
に対してキャストできない場合public boolean containsValue(Object value)
RenderingHints
に次のような値v
へのマッピングが1つ以上ある場合に限りtrue
を返します。
(value==null ? v==null : value.equals(v)).
RenderingHints
のほとんどの実装で、このオペレーションにかかる時間はRenderingHints
のサイズに正比例します。containsValue
、インタフェース: Map<Object,Object>
value
- このRenderingHints
内にあるかどうかが判定される値。RenderingHints
が1つまたは複数のキーと指定された値をマッピングしている場合はtrue
。public Object get(Object key)
get
、インタフェース: Map<Object,Object>
key
- 描画ヒント・キーnull
。ClassCastException
- キーをRenderingHints.Key
に対してキャストできない場合put(Object, Object)
public Object put(Object key, Object value)
key
をこのRenderingHints
オブジェクト内の指定されたvalue
にマップします。キーや値はnull
にすることはできません。valueを取得するには、元のkeyに等しいkeyを指定してget
メソッドを呼び出します。put
、インタフェース: Map<Object,Object>
key
- 描画ヒント・キー。value
- 描画ヒント値。null
。NullPointerException
- キーがnull
の場合。ClassCastException
- キーをRenderingHints.Key
に対してキャストできない場合IllegalArgumentException
- 指定されたキーのKey.isCompatibleValue()
メソッドが、指定された値に対してfalseを返す場合get(Object)
public void add(RenderingHints hints)
RenderingHints
オブジェクトのすべてのキーとそれに対応する値をこのRenderingHints
オブジェクトに追加します。このRenderingHints
オブジェクトに存在するが、指定されたRenderingHints
オブジェクトにないキーは影響を受けません。hints
-このRenderingHints
オブジェクトに追加されるキーと値のペアのセットpublic void clear()
RenderingHints
オブジェクトをクリアします。public Object remove(Object key)
RenderingHints
オブジェクトからキーとそれに対応する値を削除します。キーがこのRenderingHints
オブジェクトにない場合、このメソッドは何もしません。remove
、インタフェース: Map<Object,Object>
key
- 削除される描画ヒント・キーRenderingHints
オブジェクトでキーが以前にマッピングされていた値。キーがマッピングされていなかった場合はnull
。ClassCastException
- キーをRenderingHints.Key
に対してキャストできない場合public void putAll(Map<?,?> m)
Map
のすべてのマッピングをこのRenderingHints
にコピーします。これらのマッピングは、指定されたMap
に現在あるキーに対応する、このRenderingHints
にあったマッピングを置換します。putAll
、インタフェース: Map<Object,Object>
m
- 指定されたMap
ClassCastException
- 指定されたMap
内のキーまたは値のクラスが原因で、このRenderingHints
に格納できない場合。IllegalArgumentException
- 指定されたMap
内のキーまたは値の特性が原因で、このRenderingHints
に格納できない場合。public Set<Object> keySet()
RenderingHints
に含まれているキーのSet
ビューを返します。SetはRenderingHints
に連動しているため、RenderingHints
への変更はSet
に反映され、その逆も同様です。Set
に対する反復が進行しているときにRenderingHints
が変更された場合、その反復の結果は未定義です。Set
は要素の削除をサポートしており、対応するマッピングをRenderingHints
から削除できます。削除は、Iterator.remove
、Set.remove
、removeAll
、retainAll
、およびclear
オペレーションを通して行います。add
またはaddAll
操作はサポートされていません。public Collection<Object> values()
RenderinHints
に含まれている値のCollection
ビューを返します。Collection
はRenderingHints
に連動しているため、RenderingHints
への変更はCollection
に反映され、その逆も同様です。Collection
に対する反復が進行しているときにRenderingHints
が変更された場合、その反復の結果は未定義です。Collection
は要素の削除をサポートしており、対応するマッピングをRenderingHints
から削除できます。削除は、Iterator.remove
、Collection.remove
、removeAll
、retainAll
、およびclear
オペレーションを通して行います。add
またはaddAll
操作はサポートされていません。public Set<Map.Entry<Object,Object>> entrySet()
RenderingHints
に含まれているマッピングのSet
ビューを返します。返されるSet
の各要素はMap.Entry
です。Set
はRenderingHints
に連動しているため、RenderingHints
への変更はSet
に反映され、その逆も同様です。Set
に対する反復が進行しているときにRenderingHints
が変更された場合、その反復の結果は未定義です。
RenderingHints
オブジェクトから返されるentrySetは変更できません。
public boolean equals(Object o)
Object
をこのRenderingHints
と比較して等しいかどうかを調べます。指定されたオブジェクトもMap
であり、2つのMap
オブジェクトが同じマッピングを表す場合はtrue
を返します。つまり、t1.keySet().equals(t2.keySet())
であり、t1.keySet()
内のすべてのキーk
で次のような場合に、2つのMap
オブジェクトt1
とt2
は同じマッピングを表します。
(t1.get(k)==null ? t2.get(k)==null : t1.get(k).equals(t2.get(k)))これにより、
Map
インタフェースの実装が異なる場合でも、equals
メソッドが正しく動作することが保証されます。public int hashCode()
RenderingHints
のハッシュ・コード値を返します。RenderingHints
のハッシュ・コードは、RenderingHints
オブジェクトのentrySetビュー内の各Entry
のhashCodeの合計になるように定義されます。これにより、Object.hashCode
の一般規則によって要求されるように、任意の2つのMap
オブジェクトt1
とt2
でt1.equals(t2)
であれば、t1.hashCode()==t2.hashCode()
となることが保証されます。hashCode
、インタフェース: Map<Object,Object>
hashCode
、クラス: Object
RenderingHints
のハッシュ・コード値。Map.Entry.hashCode()
, Object.hashCode()
, Object.equals(Object)
, equals(Object)
public Object clone()
RenderingHints
オブジェクトと同じ内容を持つ、このRenderingHints
オブジェクトの複製を作成します。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.