その他の描画パラメーター
次のアトリビュートは描画操作に影響し、
IlvPalette クラスで使われます。これらは、
線の太さ、
塗りつぶしスタイル、
塗りつぶしルール、
円弧モード、
描画モード、
アルファ値、および
アンチエイリアシング・モード です。
これらのアトリビュートは、C++ タイプの定義で表されます。これらは
IlvResource のサブクラスで表されないため、「リソース」とは呼ぶことができませんが、グラフィック・リソースと一緒に動作して Rogue Waveィ Views 描画の描画アトリビュートを定義します。
線の太さ
線の太さは符号なしの短整数型です。ゼロ (0) は有効な値で、最大限細く、早く描画できる幅線の線を作成します。
塗りつぶしスタイル
もっとも複雑なグラフィック・リソースはパターンのもので、モノクローム (2 色) ドメインの単純なマスキング・パターンと色の多彩なピクセル・パターンがあります。これを塗りつぶしスタイルといいます。
塗りつぶしの種類は、パターンが形を塗りつぶすときに使用する方法を示します。3 つの種類があり、
IlvFillStyle 列挙型で表されます。モノクローム・パターンは、塗りつぶしモードが
IlvFillPattern または
IlvFillMaskPattern の場合に使用します。この値は、ユーザーが作成したか、または
IlvDisplay クラスの特定のメンバー関数が返す
IlvPattern のインスタンスです。色のパターンとは、塗りつぶしモードが
IlvFillColorPattern のときに形状を塗りつぶすために使用するものです。
IlvFillPattern
IlvFillPattern では、形状は選択したパターンでコピーされて塗りつぶされます。Rogue Wave Views のオブジェクトには、IlvPattern クラスのオブジェクトを参照するパターン・プロパティーがあります。特定のパターンで形状を塗りつぶすには、次のようにします。
関連する
IlvPattern オブジェクトの各「
0」ピクセルは、現在の背景色でカラー・ピクセルを生成します。
関連する
IlvPattern オブジェクトの各「
1」ピクセルは、現在の前景色でカラー・ピクセルを生成します。
これは
IlvPalette オブジェクトの塗りつぶし種類プロパティーのデフォルト値です。
IlvFillMaskPattern
IlvFillMaskPattern は
IlvFillPattern スタイルに似ていますが、関連する
IlvPattern オブジェクトの「
0」ピクセルは宛先ポートの対応するピクセルに影響しません。つまり、描画がその宛先をマスクします。
IlvFillColorPattern
IlvFillColorPattern の場合、形状を塗りつぶすために使用するパターンは、
IlvPalette オブジェクトのパターン・プロパティーではなく、その色の
パターン・プロパティーで示されます。これはフルカラー・パターンで領域を塗りつぶすとき、すなわち
IlvColorPattern クラスの実際のオブジェクトで使用します。パターン・プロパティーはこの塗りつぶしモードの場合には、何の役割も果たしません。
塗りつぶしルール
このアトリビュートは、自己交差している多角形の塗りつぶし方法を示します。これは多角形の表面の場合、「塗りつぶし」の意味が曖昧であるためです。
塗りつぶしルールは、塗りつぶす領域の形を定義する交差する線分の数に依存して、どのポイントが塗りつぶす多角形の内側にあると見なされるかを示します。IlvFillRule では次の 2 つのルールを提供しています。
IlvEvenOddRule このルールに基づくと、以下に示されるような複雑な多角形の場合、星の中央領域は多角形の内側にあるとはみなされないため、塗りつぶされません。これがデフォルト値となっています。
IlvWindingRule このルールに基づくと、星の中央領域は多角形の中にあると見なされるため塗りつぶされます。
図 3.6 IlvFillRule
円弧モード
円弧モードは、円弧を塗りつぶすためにそれらを閉じる方法を示します。これはつまり、どのように塗りつぶし円弧が描画されるかということです。これは V 字型の「パイ」を作る半径か、単純な「弦」線分のどちらかを使用します。IlvArcMode 列挙型が処理する 2 つの場合が考えられます。
IlvArcPie 真円の中心から円弧の開始点と終了点に 2 つの線を追加することで円弧を閉じます。これはデフォルトのモードとなっています。
IlvArcChord 開始点から終了点に線を追加することで円弧を閉じます。
図 3.7 円弧モード
描画モード
描画モードは、ピクセルが宛先ポートに送出されたときに実行される操作を指定します。この操作は、ソースのピクセル値がその場所に描画されようとしているときに、ターゲットのピクセルの値に影響するものです。描画モードには使用できる値がいくつかあり、これらは IlvDrawMode 列挙型で処理されます。一時的な描画に使用される IlvModeXor の値を除いて、これらのタイプは色で描画する場合に顕著な描画上の効果はありません。
IlvModeSet できあがるピクセルはソース・ピクセルのコピーです。
IlvModeOr できあがるピクセルはソース・ピクセルとターゲット・ピクセルへの
OR 演算の結果になります。
IlvModeAnd できあがるピクセルはソース・ピクセルとターゲット・ピクセルへの
AND 演算の結果になります。
IlvModeXor できあがるピクセルはソース・ピクセルとターゲット・ピクセルへの
XOR (exclusive or) 演算の結果になります。このモードは 2 度目には図形の削除に使用できます。
IlvModeNot できあがるピクセルはターゲット・ピクセルへの
NOT 演算の結果になります。ソース・ピクセルの値は使用しません。
IlvModeInvert できあがるピクセルはソース・ピクセルへの
NOT 演算の結果になります。
IlvModeNotOr できあがるピクセルはソース・ピクセルとターゲット・ピクセルへの
NOT OR 演算の結果になります。
IlvModeNotAnd できあがるピクセルはソース・ピクセルとターゲット・ピクセルへの
NOT AND 演算の結果になります。
IlvModeNotXor できあがるピクセルはソース・ピクセルとターゲット・ピクセルへの
NOT XOR 演算の結果になります。
IlvModeNotXor のセットで同じオブジェクトを 2 度描画すると、図形は非表示になります。
アルファ値
アルファ値は、描画の透明度を示します。0 値は描画結果が完全に透明になること、つまり何も描かれないことを意味します。IlvFullIntensity 値は、描画結果が不透明になることを意味します。
描画には、次の 2 つのオブジェクトを使用します。
IlvPalette オブジェクト。描画に使用するグラフィック・リソース一式。詳細については、IlvPalete を参照してください。
両方のレベルで透明度を制御することができます。たとえば、(
IlvPort::setAlpha を使用して) ポートおよび描画に使用するパレットに (
IlvPalette::setAlpha を使用して) アルファ値を設定します。この場合、結果として描かれる描画は 2 つのアルファ値の合成を使用します。
アンチエイリアシング・モード
アンチエイリアシング・モードは、アンチエイリアシングを使って円滑な線の描画を行うかどうかを示します。このモードには以下の値を使用できます。
IlvDefaultAntialiasingMode アンチエイリアシング・モードは明示的に指定しません。これはデフォルト値を使用して継承します。
IlvNoAntialiasingMode アンチエイリアシングを描画に使用しません。
IlvUseAntialiasingMode アンチエイリアシングを使用して描画します。
アンチエイリアシング・モードはさまざまなレベルで指定できます。
以下のルールは、最終的な描画にアンチエイリアシングを使用するかどうかを決定する際に適用されます。
パレット:
(メンバー関数
IlvPalette::setAntialiasingMode を使用して) パレットのアンチエイリアシング・モードが設定されている場合、このモードを使用します。
その他の場合、パレットには
IlvDefaultAntialiasingMode が適用され、ポートのモードは描画に使うものを使用します。
ポート:
(メンバー関数
IlvPort::setAntialiasingMode を使用して) ポートのアンチエイリアシング・モードが設定されている場合、このモードを使用します。
その他の場合、ポートには
IlvDefaultAntialiasingMode が適用され、ディスプレイのモードを使用します。
ディスプレイに関しては、デフォルトのアンチエイリアシング・モードは
IlvNoAntialiasingMode です。この設定は次のいずれかの方法で変更できます。
メンバー関数
IlvDisplay::setAntialiasingMode を使用する。
Antialiasing リソースを
true に設定する。
環境変数
IlvAntialiasing を
true に設定する。
Version 5.6
Copyright © 2012, Rogue Wave Software, Inc. All Rights Reserved.