Win32 API 日本語リファレンス
ホームGraphics.Direct2D.Common › D2D1_ALPHA_MODE

D2D1_ALPHA_MODE

列挙型
基底型i4

メンバー 4

名前10進16進説明
D2D1_ALPHA_MODE_UNKNOWN00x0アルファ値に意味がない可能性があります。
D2D1_ALPHA_MODE_PREMULTIPLIED10x1アルファ値は乗算済みです。各色は最初にアルファ値でスケーリングされます。アルファ値自体は、ストレートアルファでも乗算済みアルファでも同じです。通常、どのカラーチャネルの値もアルファチャネルの値を超えることはありません。乗算済み形式でカラーチャネルの値がアルファチャネルを超えている場合、標準的なソースオーバーのブレンド計算では加算的なブレンドになります。
D2D1_ALPHA_MODE_STRAIGHT20x2アルファ値は乗算されていません。アルファチャネルは色の透明度を示します。
D2D1_ALPHA_MODE_IGNORE30x3アルファ値は無視されます。

公式ドキュメント

ビットマップまたはレンダーターゲットのアルファ値をどのように扱うかを指定します。

解説(Remarks)

D2D1_ALPHA_MODE 列挙型は、D2D1_PIXEL_FORMAT 列挙型と共に使用して、レンダーターゲットまたはビットマップのアルファモードを指定します。レンダーターゲットやビットマップによって、サポートされるアルファモードは異なります。一覧については、Supported Pixel Formats and Alpha Modes を参照してください。

ストレートアルファと乗算済みアルファの違い

ストレートアルファを使用して 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 のレンダーターゲットで部分的に透明な赤い四角形を描画すると、(背景が白の場合) 想定どおりに四角形はピンク色に見えます。

アルファモードが 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 の設定がどの値に解決されるかの一覧については、Supported Pixel Formats and Alpha Modes の概要を参照してください。)

SetTextAntialiasMode メソッドを使用すると、テキストのアンチエイリアスモードを D2D1_TEXT_ANTIALIAS_MODE CLEARTYPE に戻すことができますが、透明なサーフェスに ClearType テキストをレンダリングすると、予測できない結果になることがあります。透明なレンダーターゲットに ClearType テキストをレンダリングする場合は、次の 2 つの手法のいずれかを使用することをお勧めします。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum D2D1_ALPHA_MODE : int {
    D2D1_ALPHA_MODE_UNKNOWN = 0,
    D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
    D2D1_ALPHA_MODE_STRAIGHT = 2,
    D2D1_ALPHA_MODE_IGNORE = 3
} D2D1_ALPHA_MODE;
public enum D2D1_ALPHA_MODE : int
{
    D2D1_ALPHA_MODE_UNKNOWN = 0,
    D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
    D2D1_ALPHA_MODE_STRAIGHT = 2,
    D2D1_ALPHA_MODE_IGNORE = 3,
}
Public Enum D2D1_ALPHA_MODE As Integer
    D2D1_ALPHA_MODE_UNKNOWN = 0
    D2D1_ALPHA_MODE_PREMULTIPLIED = 1
    D2D1_ALPHA_MODE_STRAIGHT = 2
    D2D1_ALPHA_MODE_IGNORE = 3
End Enum
import enum

class D2D1_ALPHA_MODE(enum.IntEnum):
    D2D1_ALPHA_MODE_UNKNOWN = 0
    D2D1_ALPHA_MODE_PREMULTIPLIED = 1
    D2D1_ALPHA_MODE_STRAIGHT = 2
    D2D1_ALPHA_MODE_IGNORE = 3
// D2D1_ALPHA_MODE
pub const D2D1_ALPHA_MODE_UNKNOWN: i32 = 0;
pub const D2D1_ALPHA_MODE_PREMULTIPLIED: i32 = 1;
pub const D2D1_ALPHA_MODE_STRAIGHT: i32 = 2;
pub const D2D1_ALPHA_MODE_IGNORE: i32 = 3;
// D2D1_ALPHA_MODE
const (
	D2D1_ALPHA_MODE_UNKNOWN int32 = 0
	D2D1_ALPHA_MODE_PREMULTIPLIED int32 = 1
	D2D1_ALPHA_MODE_STRAIGHT int32 = 2
	D2D1_ALPHA_MODE_IGNORE int32 = 3
)
const
  D2D1_ALPHA_MODE_UNKNOWN = 0;
  D2D1_ALPHA_MODE_PREMULTIPLIED = 1;
  D2D1_ALPHA_MODE_STRAIGHT = 2;
  D2D1_ALPHA_MODE_IGNORE = 3;
// D2D1_ALPHA_MODE
pub const D2D1_ALPHA_MODE_UNKNOWN: i32 = 0;
pub const D2D1_ALPHA_MODE_PREMULTIPLIED: i32 = 1;
pub const D2D1_ALPHA_MODE_STRAIGHT: i32 = 2;
pub const D2D1_ALPHA_MODE_IGNORE: i32 = 3;
const
  D2D1_ALPHA_MODE_UNKNOWN* = 0
  D2D1_ALPHA_MODE_PREMULTIPLIED* = 1
  D2D1_ALPHA_MODE_STRAIGHT* = 2
  D2D1_ALPHA_MODE_IGNORE* = 3
enum D2D1_ALPHA_MODE : int {
    D2D1_ALPHA_MODE_UNKNOWN = 0,
    D2D1_ALPHA_MODE_PREMULTIPLIED = 1,
    D2D1_ALPHA_MODE_STRAIGHT = 2,
    D2D1_ALPHA_MODE_IGNORE = 3,
}
#define global D2D1_ALPHA_MODE_UNKNOWN       0x0
#define global D2D1_ALPHA_MODE_PREMULTIPLIED 0x1
#define global D2D1_ALPHA_MODE_STRAIGHT      0x2
#define global D2D1_ALPHA_MODE_IGNORE        0x3