2015-02-10 46 views
0

情況基本上是用一個基本的線性漸變畫出幾個移動的原始形狀,使它們在透明的空白畫布上重疊。他們在哪裏重疊的alpha通道值的變化(即,他們流血)。試圖在沒有get/putImageData的情況下在畫布上操作alpha?

最終階段將每個像素的阿爾法取整,所以取決於它與哪個像素更接近。

用的imageData很容易做到 -

var ctxImage = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height); 
var ctxData = ctxImage.data; 
for (var i = 0; i < ctxData.length; i += 4) { 
    ctxData[i + 3] = ctxData[i + 3] > 128 ? 255 : 0; 
    // or ctxData[i + 3] = Math.round(ctxData[i + 3]/255) * 255; 
} 
ctx.putImageData(ctxImage, 0, 0); 

作爲該getImageData在CPU時間非常昂貴的,我希望能制定出使用globalCompositeOperation一個解決方案,但似乎無法以任何方式獲得它的工作,任何想法?

回答

0

沒有其他方法將α值捕捉到0 || 255.

合成可讓源像素或目標像素生存,但不會像您所描述的那樣捕捉Alpha。

+0

這就是我的想法 - 但本來希望我可以接近一些東西 - 一點半透明不是壞事: - / – Rycochet 2015-02-11 07:11:00

相關問題