共用方式為


3D 轉換效果

使用 3D 轉換效果,將任意的 4x4 轉換矩陣套用至影像。

此效果會套用矩陣 (M?) 您提供給來源影像的角落頂點, ([ x y z 1 ]) 使用此計算:

[ xr yr zr 1 ]=[ x y z 1 ]*M?

此效果的 CLSID 是CLSID_D2D13DTransform。

範例影像

之前
轉換前的影像。
After
轉換之後的影像。
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();

效果屬性

顯示名稱和索引列舉 描述
InterpolationMode
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 轉換矩陣。 下列矩陣計算是用來將點從一個 3D 座標系統對應至轉換的 2D 座標系統。
3D 深度矩陣其中:
X、Y、Z = 輸入投影平面座標
Mx,y = 轉換矩陣元素
X、Y 、Z =輸出投影平面座標

個別矩陣元素不會系結且無單位。
類型為 D2D1_MATRIX_4X4_F。
預設值為 Matrix4x4F (1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1) 。

插補模式

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

注意

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

注意

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

框線模式

名稱 描述
D2D1_BORDER_MODE_SOFT 效果會在影像插補時以透明黑色圖元填補影像,因而產生軟邊緣。
D2D1_BORDER_MODE_HARD 效果會將輸出限制為輸入影像的大小。

4x4 轉換矩陣類別

Direct2D 提供 4x4 矩陣類別,以提供協助程式函式以 3 個維度轉換影像。 如需所有類別成員的詳細資訊和描述,請參閱 Matrix4x4F 主題。

函式 描述 矩陣
Matrix4x4F::Scale (X、Y、Z) 產生轉換矩陣,以 X、Y 和/或 Z 方向縮放投影平面。 scale3d 矩陣
SkewX (X) 產生轉換矩陣,以 X 方向扭曲投影平面。 顯示 X 方向的扭曲矩陣。
扭曲 (Y) 產生轉換矩陣,以 Y 方向扭曲投影平面。 扭曲矩陣
翻譯 (X、Y、Z) 產生轉換矩陣,以 X、Y 或 Z 方向轉譯投影平面。 轉移矩陣
RotationX (X) 產生轉換矩陣,以繞 X 軸旋轉投影平面。 旋轉 x 矩陣
RotationY (Y) 產生轉換矩陣,以繞 Y 軸旋轉投影平面。 旋轉 y 矩陣
RotationZ (Z) 產生轉換矩陣,以繞 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

ID2D1Effect