共用方式為


複合效果

使用複合效果來結合 2 個以上的影像。 這個效果有 13 種不同的複合模式。 T

複合效果接受2個以上的輸入。 當您指定 2 個影像時,目的地是第一個輸入 (index 0),而來源是第二個輸入 (index 1)。 如果您指定了 2 個以上的輸入,影像會從第一個輸入開始,第二個輸入等開始進行複合。

這個效果會使用圖形處理單位的混合單位 (GPU) 實作所有模式。

這個效果的 CLSID 是CLSID_D2D1Composite。

範例影像

此處的影像顯示重疊相同大小的 2 個圓角矩形。 藍色矩形是來源,紅色矩形是目的地。 影像會以「來源過度」模式進行複合。

範例影像,其中顯示2個圓角矩形,其大小與來源過度模式重疊。

以下是另一個使用預設模式的範例。

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

compositeEffect->SetInput(0, bitmap);
compositeEffect->SetInput(1, bitmapTwo);

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

效果屬性

顯示名稱和索引列舉 類型和預設值 描述
模式
D2D1_COMPOSITE_PROP_MODE
D2D1_COMPOSITE_MODE
D2D1_COMPOSITE_MODE_SOURCE_OVER
用於效果的模式。

模式類型

下表顯示此效果的模式。 資料表中列出的方程式會使用這些元素:

  • O = 輸出
  • S = 來源
  • SA = 來源 Alpha
  • D = 目的地
  • DA = 目的地 Alpha
列舉 方程 輸出點陣圖大小
D2D1_COMPOSITE_MODE_SOURCE_OVER O = S + (1 SA) * D 來源和目的地點陣圖的聯集
D2D1_COMPOSITE_MODE_DESTINATION_OVER O = (1 DA) * S + D 來源和目的地點陣圖的聯集
D2D1_COMPOSITE_MODE_SOURCE_IN O = DA * S 來源和目的地位圖的交集
D2D1_COMPOSITE_MODE_DESTINATION_IN O = SA * D 來源和目的地位圖的交集
D2D1_COMPOSITE_MODE_SOURCE_OUT O = (1 - DA) * S 來源位圖的區域
D2D1_COMPOSITE_MODE_DESTINATION_OUT O = (1 - SA) * D 目的地點陣圖的區域
D2D1_COMPOSITE_MODE_SOURCE_ATOP O = DA * S + (1 - SA) * D 目的地點陣圖的區域
D2D1_COMPOSITE_MODE_DESTINATION_ATOP O = (1 - DA) * S + SA * D 來源位圖的區域
D2D1_COMPOSITE_MODE_XOR O = (1 - DA) * S + (1 - SA) * D 來源和目的地點陣圖的聯集
D2D1_COMPOSITE_MODE_PLUS O = S + D 來源和目的地點陣圖的聯集
D2D1_COMPOSITE_MODE_SOURCE_COPY O = S 來源位圖的區域
D2D1_COMPOSITE_MODE_BOUNDED_SOURCE_COPY O = S (只有來源存在的地方) 來源和目的地點陣圖的聯集。 不會覆寫來源不存在的目的地。
D2D1_COMPOSITE_MODE_MASK_INVERT O = (1 D) * S + (1 SA) * D 來源和目的地點陣圖的聯集。Alpha 值不變。

下圖顯示每個模式的範例,其中影像不透明度為 1.0 或 0.5。

每個模式的範例影像,其中不透明度設定為1.0或0.5。

範例程序代碼

如需此效果的範例,請下載 Direct2D 複合效果模式範例

要求

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

ID2D1Effect