HTML5Canvas渐进添补与透亮实现图像的Mask结果-
细致解释HTML5 Canvas中渐进添补的参数设定与运用,Canvas中透亮度的设定与运用,联合渐进添补与透亮度支撑,实现图像的Mask结果。
一:渐进添补(Gradient Fill)
Canvas支撑两种渐进添补方式,一种为线性渐进添补(Line Gradient Fill),别的一种称
为经向渐变添补(RadialGradient Fill)。其API离别为:
createLinearGradient(x1, y1, x2, y2);
其中x1,y1为首先个点坐标,x2,y2为第二个点坐标。
createRadialGradient(x1, y1, r1, x2, y2, r2);
其中x1, y1为首先个核心点坐标,r1为半径,x2, y2为第二个核心点坐标,r2为半径。
为每个点设定色彩
addColorStop(position, color);
其中position表示位置,大小范畴[0~1]其中0表示首先个点,1表示第二个点坐标
Color表示色彩值,任何CSS的色彩值。
渐进添补对象新建与配置之后可以用来设定context的strokeStyle与fillStyle实现文字,
几何外形的渐进色彩添补。
线性渐进方式的代码演示:
1. 垂直(Y)标的目的色彩渐进
// vertical/Y direction var lineGradient = ctx.createLinearGradient (50, 0, 50, 200); lineGradient.addColorStop(0, 'rgba(255, 0, 0, 1)'); lineGradient.addColorStop(1, 'rgba(255, 255, 0, 1)'); ctx.fillStyle = lineGradient; ctx.fillRect(0, 0, 300, 300);
2. 水平(X)标的目的色彩渐进
// horizontal/X direction var lineGradient = ctx.createLinearGradient (0, 50, 200, 50); lineGradient.addColorStop(0, 'rgba(255, 0, 0, 1)'); lineGradient.addColorStop(1, 'rgba(255, 255, 0, 1)'); ctx.fillStyle = lineGradient; ctx.fillRect(0, 0, 300, 300);
// vertical and horizontal direction var lineGradient = ctx.createLinearGradient (0, 0, 200, 200); lineGradient.addColorStop(0, 'rgba(255, 0, 0, 1)'); lineGradient.addColorStop(1, 'rgba(255, 255, 0, 1)'); ctx.fillStyle = lineGradient; ctx.fillRect(0, 0, 300, 300);
// change global alpha value ctx.globalAlpha=0.5; ctx.fillRect(50,50,75,50);
// change fill style color's alphachannel ctx.fillStyle = 'rgba(225,225,225,0.5)'; ctx.fillRect(50,50,75,50);
两个结果是同样的。
三:相片透亮渐进Mask结果
运用径向色彩渐变与透亮度变化,实此刻图像上的半透亮面罩结果,足本运转结果:
var myImage = document.createElement('img'); myImage.src = "../test.png"; myImage.onload = function() { ctx.drawImage(myImage, 80, 30, myImage.naturalWidth, myImage.naturalHeight); var radialGradient = ctx.createRadialGradient (canvas.width/2, canvas.height/2, 10, canvas.width/2, canvas.height/2, 200); radialGradient.addColorStop(0, 'rgba(247, 247, 247, 0)'); radialGradient.addColorStop(0.7, 'rgba(120, 120, 120, 0.5)'); radialGradient.addColorStop(0.9, 'rgba(0, 0, 0, 0.8)'); radialGradient.addColorStop(1, 'rgba(238, 238, 238, 1)'); ctx.beginPath(); ctx.arc(canvas.width/2, canvas.height/2, 300, 0, Math.PI * 2, true); ctx.closePath(); ctx.fillStyle = radialGradient; ctx.fill(); }
以上就是本文的全部内容,但愿对大家的学习有所帮忙,更多相干内容请关注百分百源码网!
以上就是HTML5 Canvas渐进添补与透亮实现图像的Mask结果的细致内容,更多请关注 百分百源码网 其它相干文章!