共用方式為


離散傳輸效果

使用離散傳輸效果,使用從您提供的值清單建立的步驟傳輸函式,來對應影像的色彩強度。

此效果的 CLSID CLSID_D2D1DiscreteTransfer。

範例影像

此處的影像顯示離散傳輸效果的輸入和輸出。

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

discreteTransferEffect->SetInput(0, bitmap);

float table[3] = {0.0f, 0.5f, 1.0f};
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_RED_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE, table);
discreteTransferEffect->SetValue(D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE, table);

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

傳輸函式是以輸入清單為基礎:V= (V0,V1,V2,V3,V?,VN) 其中 N 是元素數目 - 1。

輸入圖元強度會以 C 表示。輸出圖元強度,C 會以方程式計算:

針對值 C,挑選 k 值,如下所示:

進程的公式。

您可以使用方程式來計算輸出 C:C' = V?

此效果適用于直接和預乘 Alpha 影像。 效果會輸出預乘 Alpha 點陣圖。

以下是當輸入為 [0.25, 0.5, 0.75, 1.0] 時,離散傳輸函式的圖形看起來的樣子。

離散傳輸函式的圖元強度圖表。

效果屬性

注意

離散傳輸屬性的所有通道值都是無單位的,且最小為 0.0 且最大為 1.0。

顯示名稱和索引列舉 類型和預設值 描述
RedTable
D2D1_DISCRETETRANSFER_PROP_RED_TABLE
FLOAT[]
{0.0f, 1.0f}
用來定義 Red 通道傳輸函式的值清單。
RedDisable
D2D1_DISCRETETRANSFER_PROP_RED_DISABLE
BOOL
FALSE
如果您將此設定為 TRUE,效果就不會將傳輸函式套用至紅色通道。 如果您將此設定為 FALSE,效果會將 RedDiscreteTransfer 函式套用至 Red 通道。
GreenTable
D2D1_DISCRETETRANSFER_PROP_GREEN_TABLE
FLOAT[]
{0.0f, 1.0f}
定義綠色通道傳輸函式的值清單。
GreenDisable
D2D1_DISCRETETRANSFER_PROP_GREEN_DISABLE
BOOL
FALSE
如果您將此設定為 TRUE,效果就不會將傳輸函式套用至綠色通道。 如果您將此設定為 FALSE,效果會將 GreenDiscreteTransfer 函式套用至綠色通道。
BlueTable
D2D1_DISCRETETRANSFER_PROP_BLUE_TABLE
FLOAT[]
{0.0f, 1.0f}
定義藍色通道傳輸函式的值清單。
BlueDisable
D2D1_DISCRETETRANSFER_PROP_BLUE_DISABLE
BOOL
FALSE
如果您將此設定為 TRUE,效果就不會將傳輸函式套用至藍色通道。 如果您將此設定為 FALSE,效果會將 BlueDiscreteTransfer 函式套用至藍色通道。
AlphaTable
D2D1_DISCRETETRANSFER_PROP_ALPHA_TABLE
FLOAT[]
{0.0f, 1.0f}
定義 Alpha 色板傳輸函式的值清單。
AlphaDisable
D2D1_DISCRETETRANSFER_PROP_ALPHA_DISABLE
BOOL
FALSE
如果您將此設定為 TRUE,效果就不會將傳輸函式套用至 Alpha 色板。 如果您將此設定為 FALSE,效果會將 AlphaDiscreteTransfer 函式套用至 Alpha 色板。
ClampOutput
D2D1_DISCRETETRANSFER_PROP_CLAMP_OUTPUT
BOOL
FALSE
效果是否會在效果將色彩值限制為介於 0 到 1 之間,再將值傳遞至圖形中的下一個效果。 效果會在預先乘法 Alpha 之前先限制值。
如果您將此設定為 TRUE,效果將會限制值。 如果您將此設定為 FALSE,效果將不會限制色彩值,但是其他效果和輸出介面可能會限制值,如果這些值不夠精確。

規格需求

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

ID2D1Effect