形態効果
イメージ内のエッジ境界を薄くまたは太くするには、形態効果を使用します。 この効果により、指定した 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 |