次の方法で共有


行列効果を結合する

イメージに任意の 2D カーネルを適用するには、コンボルブ 行列効果を使用します。 この効果を使用すると、画像のぼかし、エッジの検出、浮き出し、シャープ化を行うことができます。

この効果の CLSID はCLSID_D2D1ConvolveMatrix。

画像の例

次の例は、3 x 3 カーネルでのコンボルブ 行列効果の入力と出力を示しています。

以前は
効果の前に画像を します。
変換後にイメージを します。
ComPtr<ID2D1Effect> convolveMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ConvolveMatrix, &convolveMatrixEffect);

convolveMatrixEffect->SetInput(0, bitmap);
float matrix[9] = {-1, -1, -1, -1, 9, -1, -1, -1, -1};
convolveMatrixEffect->SetValue(D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX, matrix);

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

Effect プロパティ

表示名とインデックス列挙 形容
KernelUnitLength
D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH
カーネル内の 1 単位のサイズ。 単位は (DIP/カーネルユニット) にあります。ここで、カーネルユニットは畳み込みカーネル内の要素のサイズです。 値 1 (DIP/カーネル 単位) は、96 DPI の画像内の 1 ピクセルに対応します。
型は FLOAT です。
既定値は 1.0f です。
ScaleMode
D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE
効果がイメージを対応するカーネル ユニットの長さにスケーリングするために使用する補間モード。 品質と速度に対応する 6 つのスケール モードがあります。
型はD2D1_CONVOLVEMATRIX_SCALE_MODE。
既定値は D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR です。
KernelSizeX
D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X
カーネル マトリックスの幅。 単位はカーネル単位で指定されます。 型は UINT32 です。
既定値は 3 です。
KernelSizeY
D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y
カーネル マトリックスの高さ。 単位はカーネル単位で指定されます。 型は UINT32 です。
既定値は 3 です。
KernelMatrix
D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX
イメージに適用されるカーネル マトリックス。 カーネル要素は境界付けされず、float として指定されます。
FLOAT[] の最初の KernelSizeX 番号のセットは、カーネルの最初の行に対応します。 KernelSizeX 番号の 2 番目のセットは、2 番目の行に対応し、最大 KernelSizeY 行にも対応します。
型は FLOAT[] です。
既定値は、{0.0f、0.0f、0.0f、0.0f、1.0f、0.0f、0.0f、0.0f、0.0f} です。
除数
D2D1_CONVOLVEMATRIX_PROP_DIVISOR
カーネル マトリックスがピクセルに適用され、結果がこの値で除算されます。
0 は float epsilon の値として動作します。
型は FLOAT です。
既定値は 1.0f です。
バイアス
D2D1_CONVOLVEMATRIX_PROP_BIAS
効果によってカーネル 行列、除数が適用され、結果にバイアスが追加されます。 バイアスは無制限でユニトレスです。 型は FLOAT です。
既定値は 0.0f です。
KernelOffset
D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET
畳み込みカーネルを出力ピクセル上の中央の位置から、左/右および上/下に指定した位置にシフトします。 オフセットはカーネル単位で定義されます。
一部のオフセットとカーネル サイズでは、畳み込みカーネルのサンプルはピクセルイメージの中心に配置されません。 カーネル サンプルのピクセル値は、バイリニア補間によって計算されます。
型はD2D1_VECTOR_2F。
既定値は {0.0f, 0.0f} です。
PreserveAlpha
D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA
畳み込みカーネルをアルファ チャネルに適用するか、カラー チャネルのみに適用するかを指定します。
これを TRUE に設定すると 畳み込みカーネルはカラー チャネルにのみ適用されます。
これを FALSE に設定すると、畳み込みカーネルがすべてのチャネルに適用
型は BOOL です。
既定値は FALSE です。
BorderMode
D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE
イメージの境界線を計算するために使用されるモード(ソフトまたはハード)。 詳細については、「罫線モードの」を参照してください。
型はD2D1_BORDER_MODE。
既定値は D2D1_BORDER_MODE_SOFT です。
ClampOutput
D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT
効果がグラフの次の効果に値を渡す前に、効果が色の値を 0 から 1 の間にクランプするかどうかを指定します。 効果は、アルファをプリ乗算する前に値をクランプします。
これを TRUE に設定すると、効果によって値がクランプされます。 これを FALSE に設定すると、効果は色の値をクランプしませんが、精度が十分に高くない場合は、他の効果と出力サーフェスによって値がクランプされる可能性があります。
型は BOOL です。
既定値は FALSE です。

スケール モード

列挙 形容
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR 最も近い単一点をサンプリングし、その点を使用します。 このモードでは処理時間は短くなりますが、最も低品質の画像が出力されます。
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR 4 点サンプルと線形補間を使用します。 このモードでは、最も近い近隣モードよりも高品質の画像が出力されます。
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC 補間に 16 個のサンプル 3 次カーネルを使用します。 このモードでは最も処理時間が長くなりますが、より高品質の画像が出力されます。
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR 1 つのピクセル内で 4 つの線形サンプルを使用して、優れたエッジアンチエイリアシングを行います。 このモードは、ピクセル数が少ない画像で少量スケールダウンする場合に適しています。
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC 異方性フィルタリングを使用して、ビットマップの変換された形状に従ってパターンをサンプリングします。
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC 変換マトリックスにダウンスケールが関係している場合は、可変サイズの高品質の 3 次カーネルを使用して、イメージの事前スケールを実行します。 次に、最終的な出力に 3 次補間モードを使用します。

手記

モードを選択しない場合、効果は既定でD2D1_CONVOLVEMATRIX_SCALE_MODE_LINEARされます。

罫線モード

名前 形容
D2D1_BORDER_MODE_SOFT この効果は、畳み込みカーネルを適用するときに、入力の境界外にあるサンプルの透明な黒いピクセルで入力イメージを埋め込みます。 これにより、イメージのソフト エッジが作成され、プロセス内でカーネルのサイズによって出力ビットマップが拡張されます。
D2D1_BORDER_MODE_HARD この効果は、入力境界外のサンプルに対してミラー型の境界線変換を使用して入力イメージを拡張します。 出力ビットマップのサイズは、入力ビットマップのサイズと同じです。

出力ビットマップ

効果の出力のサイズは、畳み込みカーネルのサイズ、カーネル オフセット、カーネル単位の長さ、および境界線モードの設定によって異なります。

必要条件

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

ID2D1Effect