調整效果
使用此效果來相應增加或縮小影像。 效果有六種縮放模式:最接近的鄰近、線性、立方、多樣本線性、非等向性,以及高品質的立方體。
此效果的 CLSID CLSID_D2D1Scale。
範例影像
此範例顯示縮放比例效果,將輸入放大 2 倍,並裁剪為原始大小。
之前 |
---|
After |
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 |
影像縮放中心點。 此屬性是定義為: (點 X、點 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。
注意
不過,當您調整時,非等向性模式會在縮放時產生 mipmap,不過,如果您將 Cached 屬性設定為 true,則每次針對足夠小的影像,將不會產生 mipmap。
輸出點陣圖
輸出點陣圖的位置和大小取決於指定的縮放比例和中心點。
您可以使用下列方程式來計算輸出點陣圖的大小:
- BitmapSizex (圖元) =Scalex*Original Bitmap Sizex (DIPs) * (UserDPI/96)
BitmapSizey (圖元) =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 |