共用方式為


算術複合效果

使用算術複合效果,使用輸入影像的加權圖元總和來結合 2 個影像。

這個效果的 CLSID 是CLSID_D2D1ArithmeticComposite。

公式

這裡的公式是用來計算此效果。

輸出rgba = C1 * sourcergba * Destinationrgba + C2 * Sourcergba + C3 * Destinationrgba + C4

其中 C1、C2、C3、C4 是您設定的係數。

係數會對應至D2D1_VECTOR_4F中的值(x、y、z、w):

  • x = C1
  • y = C2
  • z = C3
  • w = C4

範例影像

簡單的範例是新增來源和目的地圖元。 在此範例中,2 個圓角矩形會結合在一起。 來源矩形為藍色,目的地為紅色。

此處的影像是算術複合效果的輸出,且方程式係數設定為此處的值。

  • C1 = 0
  • C2 = 1
  • C3 = 1
  • C4 = 0

範例影像,其中顯示使用算術複合效果重疊之相同大小的 2 個圓角矩形。

結果是會新增來源和目的地的圖元值。 矩形沒有重疊 RGBA 值的區域全都是 0。 其中矩形重疊的色彩是洋紅,因為 R 和 B 值都是最大值。

以下是另一個包含程式代碼的範例影像。

影像 1 之前
效果之前的第一個來源影像。
影像 2 之前
效果之前的第二個影像。
在轉換之後 映像。
ComPtr<ID2D1Effect> arithmeticCompositeEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ArithmeticComposite, &arithmeticCompositeEffect);

arithmeticCompositeEffect->SetInput(0, bitmap);
arithmeticCompositeEffect->SetInput(1, bitmapTwo);
arithmeticCompositeEffect->SetValue(D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS, D2D1::Vector4F(0.0f, 0.5f, 0.5f, 0.0f));

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

效果屬性

顯示名稱和索引列舉 描述
係數
D2D1_ARITHMETICCOMPOSITE_PROP_COEFFICIENTS
用於複合兩個輸入影像之方程式的係數。 係數是無單位和未系結的。 類型為 D2D1_VECTOR_4F。
默認值為 {1.0f、0.0f、0.0f、0.0f}。
ClampOutput
D2D1_ARITHMETICCOMPOSITE_PROP_CLAMP_OUTPUT
效果會將色彩值限制在 0 到 1 之間,效果才會將值傳遞至圖形中的下一個效果。
如果您將此值設定為TRUE,效果將會限制值。 如果您將此值設定為 FALSE,效果將不會夾住色彩值,但如果這些值不夠精確,其他效果和輸出表面可能會夾住值。
類型為 BOOL。
預設值為 FALSE。

輸出點陣圖

輸出點圖取決於係數值。 這些是可能的輸出點陣圖大小。

  • 如果 C1 是唯一的非零係數,則輸出大小是輸入矩形的交集。
  • 如果 C2 是唯一的非零係數,則輸出大小是 Source 矩形的大小。
  • 如果 C3 是唯一的非零係數,則輸出大小會是 Destination 矩形的大小。
  • 如果所有係數都是零,則輸出大小為空矩形。
  • 對於所有其他係數值,輸出大小是輸入矩形的聯集。

要求

要求 價值
最低支援的用戶端 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式]
最低支援的伺服器 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式]
頁眉 d2d1effects.h
圖書館 d2d1.lib、dxguid.lib

ID2D1Effect