千家信息网

Canvas渐进填充与透明实现图像的Mask效果怎么实现

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"Canvas渐进填充与透明实现图像的Mask效果怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Canvas渐进填充与透明实
千家信息网最后更新 2025年02月01日Canvas渐进填充与透明实现图像的Mask效果怎么实现

这篇文章主要讲解了"Canvas渐进填充与透明实现图像的Mask效果怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"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);

3.垂直与水平同时(XY方向)颜色渐进

复制代码

代码如下:

// 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);

二:透明度(Transparent)

Canvas中透明度支持分为全局与局部透明设置,全局透明度的设置可以通过设置

Context.globalAlpha来实现。局部透明度可以通过fillStyle设置颜色值中alpha值通道

来实现。两种方式代码如下:

// 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();

}

感谢各位的阅读,以上就是"Canvas渐进填充与透明实现图像的Mask效果怎么实现"的内容了,经过本文的学习后,相信大家对Canvas渐进填充与透明实现图像的Mask效果怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

代码 颜色 效果 图像 坐标 透明度 方向 方式 学习 全局 内容 半径 可以通过 水平 线性 支持 两个 中心点 位置 全局与局部 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 浦东新区管理软件开发定制价格 福建万方数据库张佳林 国家网络安全产业园区设计 大数据环境的网络安全包括 网络安全运维工作的单位 网络安全是国家安全之基 太原自己接软件开发的活 在设计网络安全方案中的核心 数据库项目经验 拉伸服务器 家电单片机软件开发需要 广东软件开发解决方案推荐 天津华盛恒辉软件开发公司 数据库中dec是什么意思 jmeter关闭数据库 数据库的元数据表从哪里来的 什么软件用的pg数据库 服务器开机启动正常显示无网络 软件开发自学需要多久 计算机软件开发专业就业方向 中汇web应用软件开发比赛 上海 棋牌软件开发 智合云服务器租赁投资合法吗 砀山公务员软件开发 小学生对网络安全的看法 想学习网络技术培训流程 网络安全责任制追究 屯溪区威力软件开发技术销售厂 安龙软件开发 火车列车时刻数据库
0