共用方式為


陰影效果

使用陰影效果從影像的Alpha色板產生陰影。 陰影對於較高的 Alpha 值比較不透明,對於較低的 Alpha 值則更為透明。 您可以設定陰影的模糊量和色彩。

這個效果的 CLSID 是CLSID_D2D1Shadow。

範例影像

此處的範例顯示陰影效果的輸出,其輸出會向下轉譯,並在原始位置中將來源影像複合在它上方。 陰影效果只會輸出陰影。

以前
在效果之前 影像。
在轉換之後 映像。
ComPtr<ID2D1Effect> shadowEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Shadow, &shadowEffect);

shadowEffect->SetInput(0, bitmap);

// Shadow is composited on top of a white surface to show opacity.
ComPtr<ID2D1Effect> floodEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Flood, &floodEffect);

floodEffect->SetValue(D2D1_FLOOD_PROP_COLOR, D2D1::Vector4F(1.0f, 1.0f, 1.0f, 1.0f));

ComPtr<ID2D1Effect> affineTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);

affineTransformEffect->SetInputEffect(0, shadowEffect.Get());

D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F::Translation(20, 20));

affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

ComPtr<ID2D1Effect> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);

compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, affineTransformEffect.Get());
compositeEffect->SetInput(2, bitmap);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();

效果屬性

顯示名稱和索引列舉 描述
BlurStandardDeviation
D2D1_SHADOW_PROP_BLUR_STANDARD_DEVIATION
要套用至影像 Alpha 色板的模糊量。 您可以將標準偏差乘以 3,以計算核心的模糊半徑。 標準偏差和模糊半徑的單位都是 DIP。
此屬性與 Gaussian Blur 標準偏差屬性相同。
此類型為 FLOAT。
默認值為 3.0f。
顏色
D2D1_SHADOW_PROP_COLOR
陰影的色彩。 此屬性是定義為:(R、G、B、A) 的D2D1_VECTOR_4F。 您必須以直線 Alpha 指定此色彩。
此類型為D2D1_VECTOR_4F。
默認值為 {0.0f、0.0f、0.0f、1.0f}。
優化
D2D1_SHADOW_PROP_OPTIMIZATION
效能優化層級。
此類型為D2D1_SHADOW_OPTIMIZATION。
預設值為 D2D1_SHADOW_OPTIMIZATION_BALANCED。

優化模式

名字 描述
D2D1_DIRECTIONALBLUR_OPTIMIZATION_SPEED 套用內部優化,例如在相對較小的半徑進行預先調整。 使用線性篩選。
D2D1_DIRECTIONALBLUR_OPTIMIZATION_BALANCED 使用與速度模式相同的優化閾值,但使用三線性篩選。
D2D1_DIRECTIONALBLUR_OPTIMIZATION_QUALITY 只使用具有大型模糊弧度的內部優化,其中近似值較不可見。 使用三線性篩選。

輸出點陣圖

輸出點陣圖的大小是模糊輸出的大小。 輸出點陣圖相對於原始點陣圖的成長量可以使用下列方程式來計算:

輸出點陣圖成長 (X 和 Y) = BlurStandardDeviation (裝置獨立圖元 (DIP)*6*(使用者 DPI)/96

輸出會以所有方向平均增加,例如,如果大小在每個方向增加 10 像素,位圖的左上角會位於 (-5, -5),而右下角會位於 (105, 105, 105),如下圖所示。

陰影效果輸出大小成長圖表。

要求

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

ID2D1Effect