Share via


形態効果

イメージ内のエッジ境界を薄くまたは太くするには、形態効果を使用します。 この効果により、指定した Width 値と Height 値の 2 倍のカーネルが作成されます。 この効果は、計算中のピクセル上にカーネルを中央に配置し、カーネルの最大値 (拡張の場合) またはカーネルの最小値 (浸食の場合) を返します。

この効果の CLSID はCLSID_D2D1Morphology です。 

画像の例

この例では、浸食モードを使用する場合の効果の出力を示します。

以前
効果の前の画像。
クリック後
変換後のイメージ。
ComPtr<ID2D1Effect> morphologyEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Morphology, &morphologyEffect);

morphologyEffect->SetInput(0, bitmap);

morphologyEffect->SetValue(D2D1_MORPHOLOGY_PROP_MODE, D2D1_MORPHOLOGY_MODE_ERODE);
morphologyEffect->SetValue(D2D1_MORPHOLOGY_PROP_WIDTH, 14);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(morphologyEffect.Get());
m_d2dContext->EndDraw(); 

効果のプロパティ

表示名とインデックス一覧 種類と既定値 説明
Mode
D2D1_MORPHOLOGY_PROP_MODE
D2D1_MORPHOLOGY_MODE
D2D1_MORPHOLOGY_MODE_ERODE
形態モード。 使用可能なモードは、浸食 (フラット化) と拡張 (厚み) です。
詳細については、「形態モード」を参照してください。

D2D1_MORPHOLOGY_PROP_WIDTH
UINT
1
X 方向のカーネルのサイズ。 単位は DIP です。 値には、1 から 100 対象に指定する必要があります。
[高さ]
D2D1_MORPHOLOGY_PROP_HEIGHT
UINT
1
Y 方向のカーネルのサイズ。 単位は DIP です。 値には、1 から 100 対象に指定する必要があります。

形態モード

名前 説明
D2D1_MORPHOLOGY_MODE_ERODE カーネル内の各 RGB チャンネルの最小値が使用されます。
D2D1_MORPHOLOGY_MODE_DILATE カーネル内の各 RGB チャンネルの最大値が使用されます。

出力ビットマップ

DILATE モードの場合、出力ビットマップ のサイズは次のように大きくなります:

要件 Value
出力ビットマップ増加 X = INT(FLOAT(Width) * ((User DPI) / 96))
出力ビットマップ増加 Y = INT(FLOAT(Height) * ((User DPI) / 96))

ERODE モードの場合、出力ビットマップ サイズは縮小されます:

要件 Value
出力ビットマップ増加 X = INT(FLOAT(-Width) * ((User DPI) / 96))
出力ビットマップ増加 Y = INT(FLOAT(-Height) * ((User DPI) / 96))

要件

要件
サポートされている最小のクライアント Windows 8 および Windows 7 [デスクトップ アプリ | Windows ストア アプリ] 用の プラットフォーム更新プログラム
サポートされている最小のサーバー Windows 8 および Windows 7 [デスクトップ アプリ | Windows ストア アプリ] 用の プラットフォーム更新プログラム
ヘッダー d2d1effects.h
ライブラリ d2d1.lib、dxguid.lib

ID2D1Effect