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 座標系統。 其中:
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 方向縮放投影平面。 | |
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 |