次の方法で共有


形態効果

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

この効果の CLSID はCLSID_D2D1Morphology。

画像の例

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

以前は
効果の前に画像を します。
変換後にイメージを します。
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(); 

Effect プロパティ

表示名とインデックス列挙 型と既定値 形容
モード
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 モードの場合、出力ビットマップ のサイズは次のように大きくなります。

要件 価値
出力ビットマップ増加 X = INT(FLOAT(Width) * ((ユーザー DPI) / 96))
出力ビットマップ増加 Y = INT(FLOAT(Height) * ((ユーザー DPI) / 96))

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

要件 価値
出力ビットマップ増加 X = INT(FLOAT(-Width) * ((ユーザー DPI) / 96))
出力ビットマップ増加 Y = INT(FLOAT(-Height) * ((ユーザー DPI) / 96))

必要条件

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

ID2D1Effect