使用線性傳輸效果,使用從您為每個通道提供之值清單建立的線性函式來對應影像的色彩強度。
這個效果的 CLSID 是CLSID_D2D1LinearTransfer。
範例影像
| 以前 |
|---|
在效果之前 ![]() |
| 後 |
在轉換之後 ![]() |
ComPtr<ID2D1Effect> linearTransferEffect;
m_d2dContext->CreateEffect(CLSID_D2D1LinearTransfer, &linearTransferEffect);
linearTransferEffect->SetInput(0, bitmap);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_RED_SLOPE, 2.5f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT, -1.0f);
linearTransferEffect->SetValue(D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE, 5.0f);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(linearTransferEffect.Get());
m_d2dContext->EndDraw();
線性傳輸函式會根據您指定的每個通道的斜率和 Y 攔截來建立。 輸出圖元強度 C 是以方程式計算:C' = mC + B,其中 m 是線性函式的斜率,B 是線性函式的 Y 攔截。
這個效果適用於直線和預乘Alpha影像。 效果會輸出預乘Alpha位圖。
效果屬性
注意
針對線性傳輸屬性的所有通道:
- Y 攔截未限定且無單位。
- 斜率未限定且無單位。
| 顯示名稱和索引列舉 | 類型和預設值 | 描述 |
|---|---|---|
| RedYIntercept D2D1_LINEARTRANSFER_PROP_RED_Y_INTERCEPT |
浮 0.0f |
Red 通道線性函式的Y攔截。 |
| RedSlope D2D1_LINEARTRANSFER_PROP_RED_SLOPE |
浮 1.0f |
Red 通道線性函式的斜率。 |
| RedDisable D2D1_LINEARTRANSFER_PROP_RED_DISABLE |
BOOL 假 |
如果您將此設定為 TRUE,效果就不會將傳輸函式套用至 Red 通道。 如果您將此設定為 FALSE,效果會將 RedLinearTransfer 函式套用至 Red 通道。 |
| GreenYIntercept D2D1_LINEARTRANSFER_PROP_GREEN_Y_INTERCEPT |
浮 0.0f |
綠色通道線性函式的Y攔截。 |
| GreenSlope D2D1_LINEARTRANSFER_PROP_GREEN_SLOPE |
浮 1.0f |
綠色通道線性函式的斜率。 |
| GreenDisable D2D1_LINEARTRANSFER_PROP_GREEN_DISABLE |
BOOL 假 |
如果您將此設定為 TRUE,效果就不會將傳輸函式套用至綠色通道。 如果您將此設定為 FALSE,則會將 GreenLinearTransfer 函式套用至綠色通道。 |
| BlueYIntercept D2D1_LINEARTRANSFER_PROP_BLUE_Y_INTERCEPT |
浮 0.0f |
Blue 通道之線性函式的 Y 攔截。 |
| BlueSlope D2D1_LINEARTRANSFER_PROP_BLUE_SLOPE |
浮 1.0f |
藍色色板線性函式的斜率。 |
| BlueDisable D2D1_LINEARTRANSFER_PROP_BLUE_DISABLE |
BOOL 假 |
如果您將此設定為 TRUE,效果就不會將傳輸函式套用至藍色通道。 如果您將此設定為 FALSE,則會將 BlueLinearTransfer 函式套用至 Blue 通道。 |
| AlphaYIntercept D2D1_LINEARTRANSFER_PROP_ALPHA_Y_INTERCEPT |
浮 0.0f |
Alpha 色板線性函式的 Y 攔截。 |
| AlphaSlope D2D1_LINEARTRANSFER_PROP_ALPHA_SLOPE |
浮 0.0f |
Alpha 色板線性函式的斜率。 |
| AlphaDisable D2D1_LINEARTRANSFER_PROP_ALPHA_DISABLE |
BOOL 假 |
如果您將此設定為 TRUE,效果就不會將傳輸函式套用至 Alpha 色板。 如果您將此設定為 FALSE,則會將 AlphaLinearTransfer 函式套用至 Alpha 色板。 |
| ClampOutput D2D1_LINEARTRANSFER_PROP_CLAMP_OUTPUT |
BOOL 假 |
效果是否會將色彩值限制在 0 到 1 之間,然後效果才會將值傳遞至圖形中的下一個效果。 效果會先夾住值,再預乘 Alpha 。 如果您將此值設定為TRUE,效果將會限制值。 如果您將此值設定為 FALSE,效果將不會夾住色彩值,但如果這些值不夠精確,其他效果和輸出表面可能會夾住值。 |
要求
| 要求 | 價值 |
|---|---|
| 最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
| 最低支援的伺服器 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
| 頁眉 | d2d1effects.h |
| 圖書館 | d2d1.lib、dxguid.lib |

