您现在的位置是:网站首页> 编程资料编程资料
Canvas 文本填充线性渐变的使用详解HTML5 canvas基本绘图之填充样式实现使用HTML5 Canvas为图片填充颜色和纹理的教程HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)HTML5 Canvas渐进填充与透明实现图像的Mask效果html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2023-10-11
448人已围观
简介 这篇文章主要介绍了Canvas 文本填充线性渐变的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
前言
在 Canvas 中对文本填充水平或垂直的线性渐变可以轻易实现,而带角度的渐变就复杂很多;就好像下面这样,假设文本矩形宽为 W, 高为 H, 左上角坐标为 X, Y。

猜想与答案
给出两个答案:

正确答案是图二,因为这样得出来的坐标生成的渐变最紧接文本矩形边界,它的运动轨迹如下动图:

(图来源:Do you really know CSS linear-gradients)
渐变起点与终点坐标的计算
所以,渐变的起点与终点坐标该怎么计算呢?答:
- 先求得起点与终点的长度(距离)。
- 根据长度与文本矩形的中心点坐标分别计算出起点与终点坐标。
线性渐变长度的计算 W3C 给出了一个公式(A 表示角度):
gradientLineLength = abs(W * sin(A)) + abs(H * cos(A))
不过,该公式主要应用于 CSS 的线性渐变设置,即以 12 点钟方向为 0°,顺时针旋转。
而我们需要的是以 3 点钟方向为 0°,逆时针旋转,即公式为:
gradientLineLength = abs(W * cos(A)) + abs(H * sin(A)) // 半长: halfGradientLineLength = (abs(W * cos(A)) + abs(H * sin(A))) / 2
那么这个公式是怎么来的呢?以下是笔者的求解:

由图可得以下方程组:

因此可推导出:

化简后为:

所以 c1 + c2 为:

由三角函数平方公式知:cos(A) * cos(A) = 1 - sin(A) * sin(A), 代入 c1 + c2:

第一步化简后:

最后的结果就是:

因为 sin, cos 在函数周期内存在负值(见下面角度对应的三角函数周期图),所以线性渐变的长度需要取绝对值。
至此,我们知道了线性渐变长度,文本矩形的中心点坐标很好算,即:
centerX = X + W / 2 centerY = Y + H / 2
所以,起点与终点的坐标分别为:
startX = centerX - cos(A) * halfGradientLineLength startY = centerY + sin(A) * halfGradientLineLength endX = centerX + cos(A) * halfGradientLineLength endY = centerY - sin(A) * halfGradientLineLength
看看最终效果

经验注释
进行三角函数计算时,应尽量避免先用 tan, 因为 tan 在其周期内存在无穷值,需要做特定的条件判断,而 sin, cos 没有此类问题,代码书写更为简洁清晰并且不会因疏忽产生错误,见下面三角函数与角度的对应关系周期图。

参阅
Do you really know CSS linear-gradients?
W3C - CSS Images Module Level 3 # linear-gradients
到此这篇关于Canvas 文本填充线性渐变的使用详解的文章就介绍到这了,更多相关Canvas文本填充线性渐变内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
相关内容
- HTML5播放实现rtmp流直播使用HTML5加载音频和视频的实现代码Html5 webRTC简单实现视频调用的示例代码HTML5 video循环播放多个视频的方法步骤HTML5 通过Vedio标签实现视频循环播放的示例代码html5视频自动横过来自适应页面且点击播放功能的实现HTML5基于flash实现播放RTMP协议视频的示例代码
- 天天酷跑新版本必看攻略 全角色等级上限和开启条件介绍_手机游戏_游戏攻略_
- 八神穿越了 技能加点心得经验_手机游戏_游戏攻略_
- 八神穿越了 神器装备属性一览_手机游戏_游戏攻略_
- 八神穿越了怎么修改无限金币的方法(图文说明)_手机游戏_游戏攻略_
- 海之号角黑洞魔法怎么获得的方法_手机游戏_游戏攻略_
- 无节操妹子逆袭 第17关 图文攻略详解_手机游戏_游戏攻略_
- 无节操妹子逆袭 第18关 图文攻略详解_手机游戏_游戏攻略_
- 无节操妹子逆袭 第19关 图文攻略详解_手机游戏_游戏攻略_
- 无节操妹子逆袭 第20关 图文攻略详解_手机游戏_游戏攻略_
