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