3D 轉換效果
使用 3D 轉換效果,將任意 4x4 轉換矩陣套用至影像。
此效果會使用此計算,將矩陣 (M?) 套用至來源影像 ([ x y z 1 ]) 的角落頂點:
[ 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();
效果屬性
顯示名稱和索引列舉 | 描述 |
---|---|
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 座標系統。 ![]()
Mx,y = 轉換矩陣元素 X、Y、Z =輸出投影平面座標 個別矩陣元素不會系結,而且是無單位的。 類型為 D2D1_MATRIX_4X4_F。 默認值為 Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 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。
注意
不過,如果您將 Cached 屬性設定為 true,則當縮放比例時,Anisotropic 模式會產生 mipmap,則每次針對足夠小的影像,都不會產生 mipmap。
框線模式
名字 | 描述 |
---|---|
D2D1_BORDER_MODE_SOFT | 效果會在影像插補時以透明黑色圖元填補影像,導致柔邊。 |
D2D1_BORDER_MODE_HARD | 效果會將輸出限制為輸入影像的大小。 |
4x4 轉換矩陣類別
Direct2D 提供 4x4 矩陣類別,以提供協助程式函式來轉換 3 維度中的影像。 如需所有類別成員的詳細資訊和描述,請參閱 Matrix4x4F 主題。
功能 | 描述 | 矩陣 |
---|---|---|
Matrix4x4F::Scale(X,Y,Z) | 產生轉換矩陣,以 X、Y 和/或 Z 方向縮放投影平面。 |
![]() |
SkewX(X) | 產生轉換矩陣,使投影平面向 X 方向傾斜。 |
![]() |
扭曲(Y) | 產生轉換矩陣,使投影平面向 Y 方向傾斜。 |
![]() |
翻譯(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 |