共用方式為


縮放效果

使用此效果來相應增加或縮小影像。 效果有六種縮放模式:最接近的芳鄰、線性、立方體、多樣本線性、非等向性,以及高品質的立方體。

這個效果的 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

ID2D1Effect