複合效果
使用複合效果來結合 2 個以上的影像。 此效果有 13 種不同的複合模式。 T
複合效果接受 2 個或多個輸入。 當您指定 2 個影像時,目的地是第一個輸入 (索引 0) ,而來源是第二個輸入 (索引 1) 。 如果您指定 2 個以上的輸入,影像會從第一個輸入和第二個等開始複合。
此效果會使用圖形處理單位的混合單位來實作所有模式, (GPU) 。
此效果的 CLSID CLSID_D2D1Composite。
範例影像
此處的影像顯示重迭相同大小的 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。
範例程式碼
如需此效果的範例,請下載 Direct2D 複合效果模式範例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用于 Windows 7 的Windows 8和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
最低支援的伺服器 | 適用于 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
標頭 | d2d1effects.h |
程式庫 | d2d1.lib、dxguid.lib |