D2D1_ALPHA_MODE 列挙型
ビットマップまたはレンダー ターゲットのアルファ値の扱い方を指定します。
構文
typedef enum {
D2D1_ALPHA_MODE_UNKNOWN = 0,
D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
D2D1_ALPHA_MODE_STRAIGHT = 2,
D2D1_ALPHA_MODE_IGNORE = 3
} D2D1_ALPHA_MODE;
定数
D2D1_ALPHA_MODE_UNKNOWN
アルファ値が意味のない値である可能性があります。D2D1_ALPHA_MODE_PREMULTIPLIED
アルファ値がプリマルチプライ済みです。各色は最初にアルファ値によって調整されます。アルファ値自体は、ストレート アルファでもプリマルチプライ済みアルファでも同じです。通常、カラー チャネル値がアルファ チャネル値を超えることはありません。プリマルチプライされた形式のカラー チャネル値がアルファ チャネルより大きい場合、標準のソースオーバー ブレンドの計算結果は加法ブレンドになります。D2D1_ALPHA_MODE_STRAIGHT
アルファ値がプリマルチプライ処理されていません。アルファ チャネルは色の透過性を示します。D2D1_ALPHA_MODE_IGNORE
アルファ値が無視されます。
解説
D2D1_ALPHA_MODE 列挙型は、レンダー ターゲットまたはビットマップのアルファ モードを指定するために、D2D1_PIXEL_FORMAT 列挙体で使用されます。レンダー ターゲットおよびビットマップが異なると、サポートされているアルファ モードも異なります。一覧については、「サポートされているピクセル形式とアルファ モード」を参照してください。
ストレート アルファとプリマルチプライ済みアルファの違い
ストレート アルファを使用して RGBA カラーを記述する場合、色のアルファ値はアルファ チャネルに格納されます。たとえば、不透明度が 60% の赤色を記述するには、"(255, 0, 0, 255 * 0.6) = (255, 0, 0, 153)" という値を使用します。値 255 は完全な赤色を示し、153 (255 の 60%) は色の不透明度が 60% であることを示します。
プリマルチプライ済みアルファを使用して RGBA カラーを記述する場合、"(255 * 0.6, 0 * 0.6, 0 * 0.6, 255 * 0.6) = (153, 0, 0, 153)" のように各色はアルファ値で乗算されます。
レンダー ターゲットにどのアルファ モードが設定されていても、D2D1_COLOR_F 値は常にストレート アルファとして解釈されます。たとえば、プリマルチプライ済みアルファ モードを使用するビットマップで使用するために ID2D1SolidColorBrush の色を指定するときは、ビットマップでストレート アルファを使用する場合と同様に色を指定します。ブラシで描画すると、Direct2D によって色が目的の形式に変換されます。
レンダー ターゲットのアルファ モード
アルファ モードの設定にかかわらず、レンダー ターゲットのコンテンツでは透過性がサポートされます。たとえば、アルファ モードが D2D1_ALPHA_MODE_IGNORE に設定されたレンダー ターゲットで部分的に透明な赤色の四角形を描画すると、予想どおり、四角形はピンク (背景が白の場合) に見えます。
アルファ モードが D2D1_ALPHA_MODE_PREMULTIPLIED のときに部分的に透明な赤色の四角形を描画すると、四角形はピンク (背景が白の場合) に見え、レンダー ターゲットの背後にあるものが透けて見えます。これは、ID2D1DCRenderTarget を使用して透明なウィンドウにレンダリングする場合や、互換性のあるレンダー ターゲット (CreateCompatibleRenderTarget メソッドによって作成されたレンダー ターゲット) を使用して透過性をサポートするビットマップを作成する場合に便利です。
ClearType とアルファ モード
レンダー ターゲットに D2D1_ALPHA_MODE_IGNORE 以外のアルファ モードを指定すると、テキスト アンチエイリアシング モードが自動的に D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE から D2D1_TEXT_ANTIALIAS_MODE GRAYSCALE に変更されます (アルファ モード D2D1_ALPHA_MODE_UNKNOWN を指定すると、Direct2D により、レンダー ターゲットの種類によって異なるアルファが設定されます。各レンダー ターゲットで D2D1_ALPHA_MODE_UNKNOWN 設定が解決される内容の一覧については、「サポートされているピクセル形式とアルファ モード」の概要を参照してください)。
SetTextAntialiasMode メソッドを使用してテキスト アンチエイリアス モードを D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE に戻すことはできますが、ClearType テキストを透明な画面にレンダリングすると、予期しない結果が生じる可能性があります。ClearType テキストを透明なレンダー ターゲットにレンダリングする場合は、次の 2 つの方法のいずれかを使用することをお勧めします。
- PushAxisAlignedClip メソッドを使用して、テキストがレンダリングされる領域にレンダー ターゲットをクリップします。次に、Clear メソッドを呼び出して不透明な色を指定し、テキストをレンダリングします。
- DrawRectangle を使用して、テキストがレンダリングされる領域の背後に不透明な四角形を描画します。
要件
クライアントの最小要件 |
Windows 7, Windows Vista SP2 および Windows Vista 用のプラットフォーム更新プログラム |
サーバーの最小要件 |
Windows Server 2008 R2, Windows Server 2008 SP2 および Windows Server 2008 用のプラットフォーム更新プログラム |
ヘッダー |
D2d1.h |