共用方式為


點陣圖來源效果

使用位圖來源效果,從 IWICBitmapSource 產生 ID2D1Image,以作為效果圖形中的輸入。 此效果會在 CPU 上執行縮放和旋轉。 它也可以選擇性地產生系統記憶體 mipmap,這可以是以各種縮減解析度主動調整非常大型影像的效能優化。

注意

位圖來源效果會將其輸入視為屬性,而不是影像輸入。 您必須使用 SetValue 方法,而不是 SetInput 方法。 WicBitmapSource 屬性是您指定影像輸入資料的位置。

這個效果的 CLSID 是CLSID_D2D1BitmapSource。

效果屬性

顯示名稱和索引列舉 描述
WicBitmapSource
D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE
IWICBitmapSource 包含要載入的影像數據。
此類型 IWICBitmapSource
預設值為 NULL。
規模
D2D1_BITMAPSOURCE_PROP_SCALE
X 和 Y 方向的尺規數量。 效果會將寬度乘以 X 值,而高度乘以 Y 值。 此屬性是定義為:(X 小數字數、Y 小數位數)的D2D1_VECTOR_2F。 尺規數量為 FLOAT、無單位,且必須是正數或 0。
此類型為D2D1_VECTOR_2F。
默認值為 {1.0f,1.0f}。
InterpolationMode。
D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE
用來調整影像的插補模式。 如需詳細資訊,請參閱 插補 模式。
如果模式停用 mipmap,則 BitmapSouce 會在 Scale 和 EnableDPICorrection 屬性所決定的解析度快取影像。
此類型為D2D1_BITMAPSOURCE_INTERPOLATION_MODE。
預設值為 D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR。
EnableDPICorrection
D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION
如果您將此設定為 TRUE,效果會調整輸入影像,以將 IWICBitmapSource 所報告的 DPI 轉換成裝置內容的 DPI。 效果會使用您使用 InterpolationMode 屬性所設定的插補模式。 如果您將此設定為 FALSE,效果會針對輸出影像使用 96.0 的 DPI。
此類型為 BOOL。
預設值為 FALSE。
AlphaMode
D2D1_BITMAPSOURCE_PROP_ALPHA_MODE
輸出的 Alpha 模式。 這可以是預乘或直線。 如需詳細資訊,請參閱 Alpha 模式
類型為 D2D1_BITMAPSOURCE_ALPHA_MODE。
預設值為 D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED。
取向
D2D1_BITMAPSOURCE_PROP_ORIENTATION
要對影像執行的翻轉和/或旋轉作業。 如需詳細資訊,請參閱 方向
此類型為D2D1_BITMAPSOURCE_ORIENTATION。
預設值為 D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT。

插補模式

當效果縮放影像或更正 DPI 時,就會使用此模式插補。 這個效果使用的插補模式是由CPU計算,而不是 GPU。

名字 描述
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR 取樣最接近的單一點,並使用該點。 不會產生Mipmap。
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR 使用四點樣本和線性插補。 不會產生Mipmap。
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC 使用16個樣本立方核心進行插補。 不會產生Mipmap。
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT 使用 WIC 風扇插補,與 IWICBitmapScaler 介面相同。 不會產生Mipmap。
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR 使用雙線性插補在系統記憶體中產生mipmap鏈結。 針對每個 Mipmap,效果會使用雙線性插補來調整為最接近的 0.5 倍數,然後使用線性插補來調整剩餘的數量。

取向

Orientation 屬性可用來套用內嵌在影像中的 EXIF 方向旗標。

名字 描述
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT 違約。 效果不會變更輸入的方向。
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL 水平翻轉影像。
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 順時針旋轉影像 180 度。
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL 順時針旋轉影像 180 度,並水平翻轉。
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL 順時針旋轉影像 270 度,並水平翻轉。
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 順時針旋轉影像 90 度。
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL 順時針旋轉影像 90 度,並水準翻轉。
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 順時針旋轉影像 270 度。

此代碼段示範如何從EXIF方向值(在 propkey.h 中定義)轉換為D2D1_BITMAPSOURCE_ORIENTATION值。

#include <propkey.h>
#include <d2d1effects.h>

D2D1_BITMAPSOURCE_ORIENTATION GetBitmapSourceOrientation(unsigned short PhotoOrientation)
{
       switch (PhotoOrientation)
       {
       case PHOTO_ORIENTATION_NORMAL:
              return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
       case PHOTO_ORIENTATION_FLIPHORIZONTAL:
              return D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_ROTATE180:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180;
       case PHOTO_ORIENTATION_FLIPVERTICAL:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_TRANSPOSE: 
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_ROTATE270:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90;
       case PHOTO_ORIENTATION_TRANSVERSE:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL;
       case PHOTO_ORIENTATION_ROTATE90:
              return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270;
       default:
              return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
       }
}

Alpha 模式

名字 描述
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED 效果輸出會使用預乘 Alpha。
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT 效果輸出會使用直 Alpha。

言論

若要在搭配使用 WIC 和 Direct2D 時優化效能,您應該使用 IWICFormatConverter,以根據您的應用程式案例和影像原生精確度轉換成適當的圖元格式。

在大部分情況下,您的應用程式 Direct2D 管線只需要每個通道 (bpc) 8 位有效位數,或影像只提供 8 bpc 精確度,因此您應該轉換成 GUID_WICPixelFormat32bppPBGRA。 不過,如果您想要利用影像所提供的額外精確度(例如,儲存大於 8 bpc 精確度的 JPEG-XR 或 TIFF),您應該使用 RGBA 型像素格式。 下表提供更多詳細數據。

所需的有效位數 影像的原生精確度 建議的像素格式
每個通道 8 位 <= 每個通道 8 位 GUID_WICPixelFormat32bppPBGRA
盡可能高 <= 每個通道 8 位 GUID_WICPixelFormat32bppPBGRA
盡可能高 每個通道 > 8 位 RGBA 通道順序,預乘 Alpha

由於許多影像格式支援多個精確度層級,因此您應該使用 IWICBitmapSource::GetPixelFormat 來取得影像原生圖元格式,然後使用 IWICPixelFormatInfo 來判斷該格式每個有效位數通道有多少位數。 此外,請注意,並非所有硬體都支援高精確度圖元格式。 在這些情況下,您的應用程式可能需要回復到 WARP 裝置,以支援高精確度。

要求

要求 價值
最低支援的用戶端 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式]
最低支援的伺服器 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式]
頁眉 d2d1effects.h
圖書館 d2d1.lib、dxguid.lib

ID2D1Effect