卷積矩陣效果
使用捲積矩陣效果,將任意 2D 核心套用至映像。 您可以使用這個效果來模糊、偵測邊緣、浮凸或銳化影像。
這個效果的 CLSID 是CLSID_D2D1ConvolveMatrix。
範例影像
以下範例顯示具有 3 x 3 核心之卷積矩陣效果的輸入和輸出。
之前 |
---|
之後 |
ComPtr<ID2D1Effect> convolveMatrixEffect;
m_d2dContext->CreateEffect(CLSID_D2D1ConvolveMatrix, &convolveMatrixEffect);
convolveMatrixEffect->SetInput(0, bitmap);
float matrix[9] = {-1, -1, -1, -1, 9, -1, -1, -1, -1};
convolveMatrixEffect->SetValue(D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX, matrix);
m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(convolveMatrixEffect.Get());
m_d2dContext->EndDraw();
效果屬性
顯示名稱和索引列舉 | 描述 |
---|---|
KernelUnitLength D2D1_CONVOLVEMATRIX_PROP_KERNEL_UNIT_LENGTH |
核心中一個單位的大小。 這些單位位於 (DIP/核心單位),其中核心單位是卷積核心中元素的大小。 值 1 (DIP/核心單位) 會對應至 96 DPI 影像中的一個圖元。 此類型為 FLOAT。 預設值為 1.0f。 |
ScaleMode D2D1_CONVOLVEMATRIX_PROP_SCALE_MODE |
效果用來將影像調整為對應核心單位長度的插補模式。 有六種縮放模式在品質和速度範圍內。 此類型為D2D1_CONVOLVEMATRIX_SCALE_MODE。 預設值為 D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR。 |
KernelSizeX D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_X |
核心矩陣的寬度。 這些單位是在核心單位中指定。 此類型為UINT32。 預設值是 3。 |
KernelSizeY D2D1_CONVOLVEMATRIX_PROP_KERNEL_SIZE_Y |
核心矩陣的高度。 這些單位是在核心單位中指定。 此類型為UINT32。 預設值是 3。 |
KernelMatrix D2D1_CONVOLVEMATRIX_PROP_KERNEL_MATRIX |
要套用至映像的核心矩陣。 核心元素不會系結,而且會指定為 floats。 FLOAT[] 中的第一組 KernelSizeX 數位會對應至核心中的第一個數據列。 KernelSizeX 數位的第二組會對應至第二列,依序對應至 KernelSizeY 數據列。 此類型為 FLOAT[]。 默認值為 {0.0f、0.0f、0.0f、0.0f、1.0f、0.0f、0.0f、0.0f、0.0f}。 |
因數 D2D1_CONVOLVEMATRIX_PROP_DIVISOR |
核心矩陣會套用至像素,然後結果會除以此值。 0 的行為為 float epsilon 的值。 此類型為 FLOAT。 預設值為 1.0f。 |
偏見 D2D1_CONVOLVEMATRIX_PROP_BIAS |
效果會套用核心矩陣、除數,然後將偏差新增至結果。 偏差是無系結和無單位的。 此類型為 FLOAT。 預設值為 0.0f。 |
KernelOffset D2D1_CONVOLVEMATRIX_PROP_KERNEL_OFFSET |
將捲積核心從輸出圖元的置中位置移至您指定左/右和向上/向下的位置。 位移是以核心單位定義。 由於某些位移和核心大小,卷積核心的樣本不會落在圖元影像中心。 核心樣本的圖元值是透過雙線性插補來計算。 此類型為D2D1_VECTOR_2F。 默認值為 {0.0f,0.0f}。 |
PreserveAlpha D2D1_CONVOLVEMATRIX_PROP_PRESERVE_ALPHA |
指定卷積核心是套用至 Alpha 色板還是只套用色彩色板。 如果您將此設定為 TRUE ,則捲積核心只會套用至色彩通道。 如果您將此設定為 FALSE ,則捲積核心會套用至所有通道。 此類型為 BOOL。 預設值為 FALSE。 |
BorderMode D2D1_CONVOLVEMATRIX_PROP_BORDER_MODE |
用來計算影像框線、軟式或硬式的模式。 如需詳細資訊,請參閱 框線模式 。 類型為 D2D1_BORDER_MODE。 預設值為 D2D1_BORDER_MODE_SOFT。 |
ClampOutput D2D1_CONVOLVEMATRIX_PROP_CLAMP_OUTPUT |
效果是否會將色彩值限制在 0 到 1 之間,然後效果才會將值傳遞至圖形中的下一個效果。 效果會先夾住值,再預乘 Alpha 。 如果您將此值設定為TRUE,效果將會限制值。 如果您將此值設定為 FALSE,效果將不會夾住色彩值,但如果這些值不夠精確,其他效果和輸出表面可能會夾住值。 此類型為 BOOL。 預設值為 FALSE。 |
調整模式
列舉型別 | 描述 |
---|---|
D2D1_CONVOLVEMATRIX_SCALE_MODE_NEAREST_NEIGHBOR | 取樣最接近的單一點,並使用該點。 此模式會使用較少的處理時間,但會輸出品質最低的影像。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR | 使用四點樣本和線性插補。 此模式會輸出質量高於最接近鄰近模式的影像。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_CUBIC | 使用16個樣本立方核心進行插補。 此模式會使用最多處理時間,但輸出品質較高的影像。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_MULTI_SAMPLE_LINEAR | 在單一像素內使用 4 個線性樣本,以取得良好的邊緣消除鋸齒功能。 此模式適合在影像上以少量像素縮小。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_ANISOTROPIC | 使用非等性篩選,根據點陣圖的轉換圖形取樣圖樣。 |
D2D1_CONVOLVEMATRIX_SCALE_MODE_HIGH_QUALITY_CUBIC | 使用可變大小的高品質立方核心,在轉換矩陣中涉及縮小比例時,執行影像的預先調整。 然後使用三次插補模式進行最終輸出。 |
注意
如果您未選取模式,效果預設為D2D1_CONVOLVEMATRIX_SCALE_MODE_LINEAR。
框線模式
名稱 | 描述 |
---|---|
D2D1_BORDER_MODE_SOFT | 效果會在套用卷積核心時,以透明黑色圖元填補輸入影像,以供輸入界限外的樣本使用。 這會建立影像的軟邊緣,而進程中會依核心的大小來擴充輸出位圖。 |
D2D1_BORDER_MODE_HARD | 效果會使用鏡像類型框線轉換來擴充輸入影像,以供輸入界限外的樣本使用。 輸出點陣圖的大小等於輸入位圖的大小。 |
輸出點陣圖
效果輸出的大小取決於卷積核心的大小、核心位移、核心單位長度,以及框線模式設定。
需求
需求 | 值 |
---|---|
最低支援的用戶端 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
最低支援的伺服器 | 適用於 Windows 7 的 Windows 8 和平臺更新 [傳統型應用程式 |Windows 市集應用程式] |
頁首 | d2d1effects.h |
程式庫 | d2d1.lib、dxguid.lib |