2012-04-09 83 views
1

我想知道是否有方法绘制图像,但给它一个着色效果。Colourize在画布上的图像?

如果你考虑游戏,当你想放置一个精灵,但是一个对象的方式,往往你试图放置的对象得到一个红色的色调,以表明它不能放置这就是我试图实现。

我目前在这里的不透明度绘制:

ctx.globalAlpha = 0.5     
ctx.drawImage(image,abposx,abposy); 

这是可能实现无库?

+0

你可以使用jquery插件来实现这一点。他们在这些插件中所做的只是在画布中操纵图像数据。 – 2013-11-13 12:03:01

+0

jQuery不是答案,因为它对canvas元素没有太大的作用。我已经在2012年4月得到了答案... – Sir 2013-11-13 16:40:56

回答

3

您可以在上面画一个半透明的矩形。例如:

ctx.fillStyle = 'rgba(255, 0, 0, 0.5)'; // 1/2 opacity red 
ctx.fillRect(0, 0, 30, 30); // Draw this over top of your image 

Here's a demo.

等距图像,所有你需要做的就是建立适当的路径。这里有一个例子:

您可以通过设置夹覆盖到你的图像globalCompositeOperationsource-atop

ctx.globalCompositeOperation = 'source-atop'; 
ctx.fillStyle = 'rgba(255, 0, 0, 0.5)'; // 1/2 opacity red 
ctx.fillRect(0, 0, 30, 30); // Draw this over top of your image 
ctx.globalCompositeOperation = 'source-over'; 

Here's a demo.您可能还需要使用影子帆布如果你想领域尽管如此,画画也有内容。

+0

我不需要将fillRect的宽度/高度设置为图像宽度高度,否则它将覆盖整个画布? – Sir 2012-04-09 01:39:09

+0

@Dave:你需要适当地设置它的宽度,高度和位置,是的。 – Ryan 2012-04-09 01:47:03

+0

嗯不知道这是完全正常工作,因为它是等角度,它将不可避免地使alpha像素红色,以及=/ – Sir 2012-04-09 01:49:16