3D 変換の効果
3D 変換効果を使用して、任意の 4x4 変換行列を画像に適用します。
この効果は、次の計算を使用して、ソース イメージのコーナー頂点 ([ x y z 1 ]) に指定した行列 (M?) を適用します。
[ xr yr zr 1 ]=[ x y z 1 ]*M?
この効果の CLSID はCLSID_D2D13DTransform。
画像の例
変更前 |
---|
クリック後 |
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);
D2D13DTransformEffect->SetInput(0, bitmap);
// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix =
D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
D2D1::Matrix4x4F::RotationY(30.0f) *
D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);
D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();
Effect プロパティ
表示名とインデックス列挙 | Description |
---|---|
補間モード D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE |
効果がイメージで使用する補間モード。 品質と速度の範囲の5スケールモードがあります。 型がD2D1_3DTRANSFORM_INTERPOLATION_MODE。 既定値は D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR です。 |
BorderMode D2D1_3DTRANSFORM_PROP_BORDER_MODE |
イメージの境界線 (ソフトまたはハード) の計算に使用されるモード。 詳細については、「 罫線モード 」を参照してください。 型がD2D1_BORDER_MODE。 既定値は D2D1_BORDER_MODE_SOFT です。 |
TransformMatrix D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX |
投影面に適用される 4x4 変換行列。 次の行列計算は、1 つの 3D 座標系から変換された 2D 座標系にポイントをマップするために使用されます。 どこ:
Mx,y = Transform Matrix 要素 X、Y、Z =出力投影平面座標 個々のマトリックス要素は境界付けされず、単位なしです。 型がD2D1_MATRIX_4X4_F。 既定値は Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1) です。 |
補間モード
列挙 | 説明 |
---|---|
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | 最も近い単一点をサンプリングし、その点を使用します。 このモードでは処理時間は短くなりますが、最も低品質の画像が出力されます。 |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR | 4 点サンプルと線形補間を使用します。 このモードでは、最も近い近隣モードよりも処理時間が長くなりますが、より高品質の画像が出力されます。 |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC | 補間に 16 個のサンプル立方カーネルを使用します。 このモードでは最も処理時間が長くなりますが、より高品質の画像が出力されます。 |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | 1 つのピクセル内で 4 つの線形サンプルを使用して、優れたエッジアンチエイリアシングを行います。 このモードは、ピクセル数の少ない画像で少量のスケールダウンに適しています。 |
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | 異方性フィルタリングを使用して、ビットマップの変換された形状に従ってパターンをサンプリングします。 |
注意
モードを選択しない場合、効果の既定値は D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR になります。
注意
異方性モードではスケーリング時にミップマップが生成されますが、この効果に入力される効果に対して Cached プロパティを true に設定すると、十分に小さい画像に対して毎回ミップマップが生成されることはありません。
罫線モード
名前 | Description |
---|---|
D2D1_BORDER_MODE_SOFT | 効果は、補間時に透明な黒いピクセルで画像を埋め込み、ソフトエッジになります。 |
D2D1_BORDER_MODE_HARD | 効果は、入力イメージのサイズに出力をクランプします。 |
4x4 変換マトリックス クラス
Direct2D には、画像を 3 次元で変換するためのヘルパー関数を提供する 4x4 マトリックス クラスが用意されています。 すべてのクラス メンバーの詳細と説明については、「 Matrix4x4F 」トピックを参照してください。
機能 | Description | Matrix |
---|---|---|
Matrix4x4F::Scale(X, Y, Z) | 投影面を X、Y、Z 方向にスケーリングする変換行列を生成します。 | |
SkewX(X) | 投影平面を X 方向に傾斜させる変換行列を生成します。 | |
SkewY(Y) | 投影平面を Y 方向に傾斜させる変換行列を生成します。 | |
Translation(X, Y, Z) | 投影面を X、Y、または Z 方向に平行移動する変換行列を生成します。 | |
RotationX(X) | 投影面を X 軸を中心に回転する変換行列を生成します。 | |
RotationY(Y) | 投影面を Y 軸を中心に回転する変換行列を生成します。 | |
RotationZ(Z) | Z 軸を中心に投影面を回転させる変換行列を生成します。 | |
PerspectiveProjection(D) | 深度値が D のパースペクティブ変換。 | |
RotationArbitraryAxis(X, Y, Z, degrees) | 投影面を指定した軸を軸回りで回転します。 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ] |
サポートされている最小のサーバー | Windows 7 のWindows 8とプラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ] |
ヘッダー | d2d1effects.h |
ライブラリ | d2d1.lib、dxguid.lib |