共用方式為


複合效果

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

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

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

此效果的 CLSID CLSID_D2D1Composite。

範例影像

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

範例影像,顯示使用來源過度模式重迭之相同大小的 2 個圓角矩形。

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

影像 1 之前
效果之前的第一個來源影像。
影像 2 之前
效果之前的第二個影像。
After
轉換之後的影像。
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