共用方式為


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 影像。 除非效果完全不透明,否則效果無法在直接 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

 

輸出點陣圖

輸出的大小與輸入影像相同。

ID2D1Effect