2D 仿射轉換效果
2D 仿射轉換效果會使用 Direct2D 矩陣轉換和六種插補模式的任何一種,根據 3X2 矩陣 ,將空間轉換 套用至影像。 您可以使用這個效果來旋轉、縮放、扭曲或轉譯影像。 或者,您可以結合這些作業。 Affine 傳輸會保留平行線條,以及影像中任三點之間的距離比例。
這個效果的 CLSID 是CLSID_D2D12DAffineTransform。
範例影像
之前 |
---|
之後 |
ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
affineTransformEffect->SetInput(0, bitmap);
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F(0.9f, -0.1f, 0.1f, 0.9f, 8.0f, 45.0f);
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(affineTransformEffect.Get());
m_d2dContext->EndDraw();
此效果會執行此矩陣作業:
雖然輸入矩陣定義為 3x2 矩陣,但最後一個數據行會以 0、0 和 1 填補,以產生平方矩陣。 這允許矩陣乘法,讓轉換可以串連成單一矩陣。
效果屬性
顯示名稱和索引列舉 | 描述 |
---|---|
InterpolationMode D2D1_2DAFFINETRANSFORM_PROP_INTERPOLATION_MODE |
用來調整影像的插補模式。 有 6 種縮放模式在品質和速度範圍內。 類型為 D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE。 預設值為 D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR。 |
BorderMode D2D1_2DAFFINETRANSFORM_PROP_BORDER_MODE |
用來計算影像框線、軟式或硬式的模式。 如需詳細資訊,請參閱 框線模式 。 類型為 D2D1_BORDER_MODE。 預設值為 D2D1_BORDER_MODE_SOFT。 |
TransformMatrix D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX |
使用 Direct2D 矩陣轉換轉換影像的 3x2 矩陣。 類型為 D2D1_MATRIX_3X2_F。 默認值為 Matrix3x2F::Identity()。 |
清晰度 D2D1_2DAFFINETRANSFORM_PROP_SHARPNESS |
在高品質的立方插補模式中,縮放篩選條件的銳度層級為介於 0 到 1 之間的浮點數。 這些值是無單位的。 當您調整影像時,您可以使用銳度來調整影像的品質。 銳度因數會影響核心的形狀。 銳度係數越高,核心越小。 注意: 此屬性只會影響高品質的立方插補模式。 類型為 FLOAT。 預設值為 0.0f。 |
框線模式
名稱 | 描述 |
---|---|
D2D1_BORDER_MODE_SOFT | 效果會在影像插補時以透明黑色圖元填補影像,導致柔邊。 |
D2D1_BORDER_MODE_HARD | 效果會將輸出限制為輸入影像的大小。 |
插補模式
列舉型別 | 描述 |
---|---|
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR | 取樣最接近的單一點,並使用該點。 此模式會使用較少的處理時間,但會輸出品質最低的影像。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR | 使用四點樣本和線性插補。 此模式使用的處理時間比最接近的鄰近模式還多,但輸出品質較高的影像。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_CUBIC | 使用16個樣本立方核心進行插補。 此模式會使用最多處理時間,但輸出品質較高的影像。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | 在單一像素內使用 4 個線性樣本,以取得良好的邊緣消除鋸齒功能。 此模式適合在影像上以少量像素縮小。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_ANISOTROPIC | 使用非等性篩選,根據點陣圖的轉換圖形取樣圖樣。 |
D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | 使用可變大小的高品質立方核心,在轉換矩陣中涉及縮小比例時,執行影像的預先調整。 然後使用三次插補模式進行最終輸出。 |
注意
如果您未選取模式,效果預設為D2D1_2DAFFINETRANSFORM_INTERPOLATION_MODE_LINEAR。
注意
不過,當您調整時,Anisotropic 模式會產生Mipmap,不過,如果您將Cached屬性設定為 true,則每次對於足夠小的影像而言,都不會產生Mipmap。
輸出點陣圖
輸出點陣圖的大小取決於套用至影像的轉換矩陣。
效果會執行轉換作業,然後在結果周圍套用周框方塊。 輸出點陣圖是周框方塊的大小。
需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
最低支援的伺服器 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
頁首 | d2d1effects.h |
程式庫 | d2d1.lib、dxguid.lib |