Alpha 效果的亮度
使用亮度為 Alpha 效果,將 Alpha 色板設定為影像的亮度,並將色彩色板設定為 0。 您可以使用此效果的輸出,根據輸入影像的亮度來建立半透明重迭。 或者,您可以使用它來製作影像遮罩。
注意
此效果沒有屬性。
此效果的 CLSID CLSID_D2D1LuminanceToAlpha。
範例影像
本範例顯示以白色表面複合之 Alpha 效果的亮度輸出,以顯示不透明度。
之前 |
---|
After |
ComPtr<ID2D1Effect> luminanceToAlphaEffect;
m_d2dContext->CreateEffect(CLSID_D2D1LuminanceToAlpha, &luminanceToAlphaEffect);
luminanceToAlphaEffect->SetInput(0, bitmap);
// LuminanceToAlpha result 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> compositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Composite, &compositeEffect);
compositeEffect->SetInputEffect(0, floodEffect.Get());
compositeEffect->SetInputEffect(1, luminanceToAlphaEffect.Get());
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(compositeEffect.Get());
m_d2dContext->EndDraw();
這個效果會使用此色彩矩陣,將輸出的 Alpha 色板設定為輸入影像的亮度。
此效果會取用並輸出預乘 Alpha 影像。 除非效果完全不透明,否則效果無法在直接 Alpha 影像上運作。
注意
因為影像會以 gamma 補償格式儲存,所以在您計算影像的亮度之前,您應該先執行反向 Gamma 修正,以取得影像的真實色彩值。 由於影像通常會儲存在 2.2 gamma,因此您可以使用 Gamma 傳輸效果搭配 (1/2.2) 的指數,然後使用該效果的輸出。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用于 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
最低支援的伺服器 | 適用于 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
標頭 | d2d1effects.h |
程式庫 | d2d1.lib、dxguid.lib |
輸出點陣圖
輸出的大小與輸入影像相同。
相關主題