2014-10-26 77 views
0

我想繪製Direct2D幀的顏色通道在x軸上移動。我知道我可以將合成模式設置爲D2D1_COMPOSITE_MODE_PLUS並分別繪製每個顏色通道,以便我可以手動移動它們。但我想知道是否有另一種(也許更有效)的方式繪製移動顏色通道的形狀?移動顏色通道而不分別繪製每個通道?

我附上了一張圖片,顯示了我的意思。 (我建議一個新標籤打開這個圖像和放大以看到效果更好) enter image description here

回答

1

這通常做的方法是在一個時間進行採樣,從輸入圖像的3個像素,由一些各自分開的在x方向上的量,並且將來自一個的紅色,來自另一個的綠色和來自第三個的藍色結合起來。不幸的是,我根本不知道DX2D,所以我不知道它是如何工作的。但是如果你有一個位圖和一個指向像素的指針,你可以簡單地從該指針中減去一個(或多個)像素,並向該指針添加一個或多個像素並從這些內存位置讀取(注意考慮圖像邊緣)。然後從您閱讀的值中拉出頻道。例如:

RGBA8* pixel = baseAddressOfImage; 
RGBA8* pixelMinus1 = pixel - 1; 
RGBA8* pixelPuls1 = pixel + 1; 
for each pixel in the output 
{ 
    result.red = pixelMinus1->red; 
    result.green = pixel->green; 
    result.blue = pixelPlus1->blue; 
    pixelMinus1++; 
    pixel++; 
    pixelPlus1++; 
} 

注意,您可以增加或減少大於1,但如上所述,你必須處理在這些情況下,邊緣會發生什麼。

+0

對不起,我遲到的迴應。我理解你的想法。現在我唯一的問題是如何讓它在D2D中正常工作。也許着色器可以提供幫助。不管怎樣,謝謝:) – Cubinator73 2014-11-01 11:35:10