共用方式為


亮度效果

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

這個效果的 CLSID 是CLSID_D2D1Brightness。

範例影像

以前
在效果之前 影像。
在轉換之後 映像。
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. 使用此方程式將影像數據從線性空間轉換成非線性空間:協助程式函式 1

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

    • 輸入 是從 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