次の方法で共有


2D アフィン変換効果

2D アフィン変換効果は、Direct2D 行列 変換 および 6 つの補間モードのいずれかを使用して、3X2 行列に基づく空間変換を画像に適用します。 この効果を使用して、イメージの回転、拡大縮小、傾斜、または平行移動を行うことができます。 または、これらの操作を組み合わせることができます。 アフィン転送では、平行線と、画像内の任意の 3 つのポイント間の距離の比率が保持されます。

この効果の CLSID はCLSID_D2D12DAffineTransform。

画像の例

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

affineTransformEffect->SetInput(0, bitmap);

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f,   0.1f, 0.9f,   8.0f, 45.0f);

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

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

この効果は、次の行列演算を実行します。

アフィン 行列演算する

入力行列は 3x2 行列として定義されていますが、最後の列には 0、0、1 が埋め込まれており、正方形の行列が生成されます。 これにより、行列乗算が可能になり、変換を 1 つの行列に連結できます。

Effect プロパティ

表示名とインデックス列挙 形容
InterpolationMode
D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE
イメージのスケーリングに使用される補間モード。 品質と速度の範囲の6スケールモードがあります。
型はD2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE。
既定値は D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR です。
BorderMode
D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE
イメージの境界線を計算するために使用されるモード(ソフトまたはハード)。 詳細については、「罫線モードの」を参照してください。
型はD2D1_BORDER_MODE。
既定値は D2D1_BORDER_MODE_SOFT です。
TransformMatrix
D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX
Direct2D 行列を使用して画像を変換する 3x2 行列 変換
型はD2D1_MATRIX_3X2_F。
既定値は Matrix3x2F::Identity() です。
切れ味
D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS
高品質の三次補間モードでは、スケーリング フィルターのシャープネス レベルが 0 から 1 の間の浮動体になります。 値は単位なしです。 シャープネスを使用して、イメージをスケーリングするときにイメージの品質を調整できます。
シャープネス係数はカーネルの形状に影響します。 シャープネス係数が高いほど、カーネルは小さくなります。
注: このプロパティは、高品質の三次補間モードにのみ影響します。
型は FLOAT です。
既定値は 0.0f です。

罫線モード

名前 形容
D2D1_BORDER_MODE_SOFT 効果は、補間時に透明な黒いピクセルで画像を埋め込み、ソフト エッジになります。
D2D1_BORDER_MODE_HARD 効果は、入力画像のサイズに出力をクランプします。

補間モード

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

手記

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

手記

異方性モードではスケーリング時にミップマップが生成されますが、この効果に入力される効果に対して Cached プロパティを true に設定すると、十分に小さい画像に対して毎回ミップマップが生成されることはありません。

出力ビットマップ

出力ビットマップのサイズは、イメージに適用される変換マトリックスによって異なります。

効果は変換操作を実行し、結果の周囲に境界ボックスを適用します。 出力ビットマップは境界ボックスのサイズです。

必要条件

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

ID2D1Effect