共用方式為


亮度效果

使用亮度效果來控制影像的亮度。

此效果的 CLSID CLSID_D2D1Brightness。

範例影像

之前
效果之前的影像。
After
轉換之後的影像。
ComPtr<ID2D1Effect> brightnessEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Brightness, &brightnessEffect);

brightnessEffect->SetValue(D2D1_BRIGHTNESS_PROP_BLACK_POINT, D2D1::Vector2F(0.0f, 0.2f));

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

效果屬性

屬性顯示名稱 類型和預設值 描述
WhitePoint
D2D1_BRIGHTNESS_PROP_WHITE_POINT
D2D1_VECTOR_2F
{1.0f, 1.0f}
亮度傳輸曲線的上方部分。 白色點會調整影像較亮部分的外觀。 此屬性適用于 x 值和 y 值,順序為 。 此屬性的每個值都介於 0 到 1 之間,包含。
BlackPoint
D2D1_BRIGHTNESS_PROP_BLACK_POINT
D2D1_VECTOR_2F
{0.0f, 0.0f}
亮度傳輸曲線的下半部。 黑色點會調整影像較深部分的外觀。 此屬性適用于 x 值和 y 值,順序為 。 此屬性的每個值都介於 0 到 1 之間,包含。

此效果會使用指定的白色和黑色點來產生用來調整點陣圖的傳輸函式。 下一個方程式描述傳送函式。 輸入強度定義于 0 到 1 之間。

亮度演算法

效果演算法會實作建立傳送函式的方程式。 我們使用此函式來調整影像圖元。 黑色點和白色點的 x 和 y 值是兩個維度中的座標,這些座標會連接以形成轉換。 最終輸出方程式的每個部分:

  1. 使用此方程式:helper 函式 1,將影像資料從線性空間轉換為非線性空間

  2. 根據下列值調整影像:

    • input 是從 0 到 1 的輸入影像圖元濃度值。

    • *白色 Pt. (x、y) *轉換曲線的位置,以取得較亮的圖元濃度。

    • 黑色 Pt. (x、y) 是較暗圖元濃度的轉換曲線位置。

  3. 使用此方程式將影像資料轉換成線性空間: 協助程式函式 2

最後輸出方程式與元件元件會顯示在這裡。

亮度調整的完整計算

輸出點陣圖

輸出點陣圖大小與輸入點陣圖大小相同。

規格需求

需求
最低支援的用戶端 適用于 Windows 7 的Windows 8和平臺更新 [傳統型應用程式 |Windows 市集應用程式]
最低支援的伺服器 適用于 Windows 7 的Windows 8和平臺更新 [傳統型應用程式 |Windows 市集應用程式]
標頭 d2d1effects.h
程式庫 d2d1.lib、dxguid.lib

ID2D1Effect