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