縮放效果
使用此效果來相應增加或縮小影像。 效果有六種縮放模式:最接近的芳鄰、線性、立方體、多樣本線性、非等向性,以及高品質的立方體。
這個效果的 CLSID 是CLSID_D2D1Scale。
範例影像
這個範例顯示縮放效果放大 2 倍的輸入,並裁剪為原始大小。
以前 |
---|
在效果之前 ![]() |
後 |
在轉換之後 ![]() |
ComPtr<ID2D1Effect> scaleEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Scale, &scaleEffect);
scaleEffect->SetInput(0, bitmap);
scaleEffect->SetValue(D2D1_SCALE_PROP_CENTER_POINT, D2D1::Vector2F(256.0f, 192.0f));
scaleEffect->SetValue(D2D1_SCALE_PROP_SCALE, D2D1::Vector2F(2.0f, 2.0f));
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(scaleEffect.Get());
m_d2dContext->EndDraw();
效果屬性
顯示名稱和索引列舉 | 描述 |
---|---|
規模 D2D1_SCALE_PROP_SCALE |
X 和 Y 方向中的小數位數,做為輸出大小與輸入大小的比率。 此屬性D2D1_VECTOR_2Fdefined為:(X 小數字數、Y 小數字數)。 尺規數量為 FLOAT、無單位,且必須是正數或 0。 此類型為D2D1_VECTOR_2F。 默認值為 {1.0f,1.0f}。 |
CenterPoint D2D1_SCALE_PROP_CENTER_POINT |
影像縮放中心點。 此屬性是定義為:(point X、point Y)的D2D1_VECTOR_2F。 單位為 DIP。 使用中心點屬性來縮放左上角以外的點。 此類型為D2D1_VECTOR_2F。 默認值為 {0.0f,0.0f}。 |
BorderMode D2D1_SCALE_PROP_BORDER_MODE |
用來計算影像框線、軟式或硬式的模式。 如需詳細資訊,請參閱 框線模式。 類型為 D2D1_BORDER_MODE。 預設值為 D2D1_BORDER_MODE_SOFT。 |
清晰度 D2D1_SCALE_PROP_SHARPNESS |
在高品質的立方插補模式中,縮放篩選條件的銳度層級為介於 0 到 1 之間的浮點數。 這些值是無單位的。 當您縮小影像時,您可以使用銳度來調整影像的品質。 銳度因數會影響核心的形狀。 銳度係數越高,核心越小。 注意: 此屬性只會影響高品質的立方插補模式。 此類型為 FLOAT。 預設值為 0.0f。 |
InterpolationMode D2D1_SCALE_PROP_INTERPOLATION_MODE |
效果用來調整影像的插補模式。 有 6 種縮放模式在品質和速度範圍內。 如需詳細資訊,請參閱 插補 模式。 此類型為D2D1_SCALE_INTERPOLATION_MODE。 預設值為 D2D1_SCALE_INTERPOLATION_MODE_LINEAR。 |
框線模式
名字 | 描述 |
---|---|
D2D1_BORDER_MODE_SOFT | 效果會在套用卷積核心時,以透明黑色圖元填補輸入影像,以供輸入界限外的樣本使用。 這會建立影像的軟邊緣,而進程中會依核心的大小來擴充輸出位圖。 |
D2D1_BORDER_MODE_HARD | 效果會使用鏡像類型框線轉換來擴充輸入影像,以供輸入界限外的樣本使用。 輸出點陣圖的大小等於輸入位圖的大小。 |
`
插補模式
列舉 | 描述 |
---|---|
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | 取樣最接近的單一點,並使用該點。 此模式會使用較少的處理時間,但會輸出品質最低的影像。 |
D2D1_SCALE_INTERPOLATION_MODE_LINEAR | 使用四點樣本和線性插補。 此模式使用的處理時間比最接近的鄰近模式還多,但輸出品質較高的影像。 |
D2D1_SCALE_INTERPOLATION_MODE_CUBIC | 使用16個樣本立方核心進行插補。 此模式會使用最多處理時間,但輸出品質較高的影像。 |
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | 在單一像素內使用 4 個線性樣本,以取得良好的邊緣消除鋸齒功能。 此模式適合在影像上以少量像素縮小。 |
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC | 使用非等性篩選,根據點陣圖的轉換圖形取樣圖樣。 |
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | 使用可變大小的高品質立方核心,在轉換矩陣中涉及縮小比例時,執行影像的預先調整。 然後使用三次插補模式進行最終輸出。 |
注意
如果您未選取模式,效果預設為D2D1_SCALE_INTERPOLATION_MODE_LINEAR。
注意
不過,如果您將 Cached 屬性設定為 true,則當縮放比例時,Anisotropic 模式會產生 mipmap,則每次針對足夠小的影像,都不會產生 mipmap。
輸出點陣圖
輸出點的位置和大小取決於指定的縮放比例和中心點。
您可以使用下列方程式來計算輸出點陣圖的大小:
- BitmapSizex(Pixels)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIPs)*(UserDPI/96)
效果會將圖元的分數四捨五入到最接近的整個圖元。
點陣圖的位置是 (0, 0) 或中心點屬性的值。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
最低支援的伺服器 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
頁眉 | d2d1effects.h |
圖書館 | d2d1.lib、dxguid.lib |