共用方式為


3D 透視轉換效果

使用 3D 透視轉換效果來旋轉 3 維度中的影像,就像從距離檢視一樣。

3D 透視轉換比 3D 轉換效果更方便,但只會公開功能的子集。 您可以計算完整的 3D 轉換矩陣,並使用 3D 轉換 效果將更任意的轉換矩陣套用至影像。

此效果的 CLSID CLSID_D2D13DPerspectiveTransform。

範例影像

之前
效果之前的影像。
After
效果之後的影像。
ComPtr<ID2D1Effect> perspectiveTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DPerspectiveTransform, &perspectiveTransformEffect);

perspectiveTransformEffect->SetInput(0, bitmap);

perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN, D2D1::Vector3F(0.0f, 192.0f, 0.0f));
perspectiveTransformEffect->SetValue(D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION, D2D1::Vector3F(0.0f, 30.0f, 0.0f));

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

效果屬性

顯示名稱和索引列舉 描述
InterpolationMode
D2D1_3DPERSPECTIVETRANSFORM_PROP_INTERPOLATION_MODE
效果在影像上使用的插補模式。 有 5 種縮放模式以品質與速度為範圍。
類型為 D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE。
預設值為 D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR。
BorderMode
D2D1_3DPERSPECTIVETRANSFORM_PROP_BORDER_MODE
用來計算影像框線、軟式或硬式的模式。 如需詳細資訊,請參閱 框線模式
類型為 D2D1_BORDER_MODE。
預設值為 D2D1_BORDER_MODE_SOFT。
深度
D2D1_3DPERSPECTIVETRANSFORM_PROP_DEPTH
PerspectiveOrigin 到投影平面的距離。 在 DIP 中指定的值,且必須大於 0。
類型為 FLOAT。
預設值為 1000.0f。
PerspectiveOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_PERSPECTIVE_ORIGIN
3D 場景中檢視器的 X 和 Y 位置。 此屬性是定義為: (點 X、點 Y) 的D2D1_VECTOR_2F。 單位以 DIP 為單位。
您可以使用 Depth 屬性來設定 Z 值。
類型為 D2D1_VECTOR_2F。
預設值為 {0.0f, 0.0f}。
LocalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_LOCAL_OFFSET
效果在旋轉投影平面之前執行的轉譯。 此屬性是定義為: (X、Y、Z) D2D1_VECTOR_3F。 單位以 DIP 為單位。
類型為 D2D1_VECTOR_3F。
預設值為 {0.0f、0.0f、0.0f}。
GlobalOffset
D2D1_3DPERSPECTIVETRANSFORM_PROP_GLOBAL_OFFSET
效果在旋轉投影平面之後執行的轉譯。 此屬性是定義為: (X、Y、Z) D2D1_VECTOR_3F。 單位以 DIP 為單位。
類型為 D2D1_VECTOR_3F。
預設值為 {0.0f、0.0f、0.0f}。
RotationOrigin
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION_ORIGIN
效果所執行旋轉的中心點。 此屬性是定義為: (X、Y、Z) D2D1_VECTOR_3F。 單位以 DIP 為單位。
類型為 D2D1_VECTOR_3F。
預設值為 {0.0f、0.0f、0.0f}。
旋轉
D2D1_3DPERSPECTIVETRANSFORM_PROP_ROTATION
每個座標軸的旋轉角度。 此屬性是定義為: (X、Y、Z) D2D1_VECTOR_3F。 單位以度為單位。
類型為 D2D1_VECTOR_3F。
預設值為 {0.0f、0.0f、0.0f}。

插補模式

列舉型別 描述
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR 取樣最接近的單一點,並使用該點。 此模式會使用較少的處理時間,但會輸出品質最低的影像。
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR 使用四個點樣本和線性插補。 此模式使用比最接近鄰近模式更多的處理時間,但輸出品質較高的影像。
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_CUBIC 使用 16 個樣本立方核心進行插補。 此模式會使用最多處理時間,但會輸出品質較高的影像。
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR 在單一圖元內使用 4 個線性樣本,以取得良好的邊緣反鋸齒。 此模式適用于在具有少量圖元的影像上相應減少。
D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC 使用等向性篩選,根據點陣圖的轉換圖形來取樣圖樣。

注意

如果您未選取模式,效果預設為D2D1_3DPERSPECTIVETRANSFORM_INTERPOLATION_MODE_LINEAR。

注意

不過,當您調整時,非等向性模式會在縮放時產生 Mipmap,不過,如果您在輸入至此效果的效果上將 Cached 屬性設定為 true,則每次針對足夠小的影像不會產生 mipmap。

框線模式

名稱 描述
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