Alpha 效果的亮度
使用亮度對 Alpha 效果,將 Alpha 色板設定為影像的亮度,並將色彩色板設定為 0。 您可以使用此效果的輸出,根據輸入影像的亮度來建立半透明重疊。 或者,您可以使用它來製作影像遮罩。
注意
此效果沒有屬性。
這個效果的 CLSID 是CLSID_D2D1LuminanceToAlpha。
範例影像
本範例顯示對白色表面複合之 Alpha 效果的亮度輸出,以顯示不透明度。
以前 |
---|
在效果之前 ![]() |
後 |
在轉換之後 ![]() |
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影像完全不透明,否則效果將無法運作。
注意
由於影像會以伽瑪補償格式儲存,因此在計算影像的亮度之前,您應該先執行反向伽瑪校正,以取得影像的真實色彩值。 由於影像通常儲存在 2.2 伽瑪,因此您可以使用伽瑪轉移效果搭配指數 (1/2.2),然後使用該效果的輸出。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
最低支援的伺服器 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
頁眉 | d2d1effects.h |
圖書館 | d2d1.lib、dxguid.lib |
輸出點陣圖
輸出的大小與輸入影像相同。
相關主題