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 つの行列に連結できます。
効果のプロパティ
表示名とインデックス一覧 | 説明 |
---|---|
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 になります。 値は単位なしです。 シャープネスを使用して、画像をスケーリングするときに画像の品質を調整できます。 シャープネス係数はカーネルの形状に影響します。 シャープネス係数が高いほど、カーネルは小さくなります。 注: このプロパティは、高品質の三次補間モードにのみ影響します。 型は 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 サンプル キュービック カーネルを使用します。 このモードでは最も処理時間は長くなりますが、より高品質の画像が出力されます。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | 単一ピクセル内で 4 つの線形サンプルを使用して、優れたエッジ アンチエイリアシングを行います。 このモードは、少ないピクセル数の画像で少しスケールダウンする場合に適しています。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | 異方性フィルタリングを使用して、ビットマップの変換された形状に従ってパターンをサンプリングします。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | 変換マトリックスにダウンスケールが関係している場合は、可変サイズの高品質のキュービック カーネルを使用して、画像の事前ダウンスケールを実行します。 次に、最終的な出力にキュービック補間モードを使用します。 |
Note
モードを選択しない場合、効果は既定で D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR になります。
Note
異方性モードではスケーリング時にミップマップが生成されますが、この効果に入力される効果に対して Cached プロパティを true に設定すると、十分に小さい画像に対して毎回ミップマップが生成されるわけではありません。
出力ビットマップ
出力ビットマップのサイズは、画像に適用される変換行列によって異なります。
効果は変換演算を実行し、結果の周囲に境界ボックスを適用します。 出力ビットマップは境界ボックスのサイズです。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 および Windows 7 [デスクトップ アプリ | Windows ストア アプリ] 用の プラットフォーム更新プログラム |
サポートされている最小のサーバー | Windows 8 および Windows 7 [デスクトップ アプリ | Windows ストア アプリ] 用の プラットフォーム更新プログラム |
ヘッダー | d2d1effects.h |
ライブラリ | d2d1.lib、dxguid.lib |