canvas 实现渐变色填充的三角形
实现效果
效果一:
效果二:
实现思路
canvas实现
1. 绘制三角形
// html
<canvas id="triangle" width="30" height="30">
Your browser does not support the canvas element.
</canvas>
// javascript
var triangle: any = document.getElementById("triangle");
var ctx = triangle.getContext("2d"); // canvas 绘制区域
ctx.beginPath(); // 开始绘制
ctx.moveTo(0, 0); // 起点A(0,0)
ctx.lineTo(30, 0); // 从起点A(0,0)绘制到B(30,0)
ctx.lineTo(15, 16); // 从B(30,0)绘制到C(15,16)
2. 设置渐变色并填充
// javascript
const grd1 = ctx.createLinearGradient(0, 0, 0, 16); // 渐变方向-Y轴
grd1.addColorStop(0, "#FFFFFF"); //起始颜色
grd1.addColorStop(1, "#CE070A80"); //终点颜色
ctx.fillStyle = grd1; //以上面定义的渐变填充
ctx.fill(); //闭合形状并且以填充方式绘制出来
【拓展】上述代码实现一个渐变色三角形,如果想要绘制多个渐变色三角形,就需要多次进行「1,2」操作。示例代码:
点击查看代码
var bg: any = document.getElementById("triangle");
var ctx = bg.getContext("2d");
ctx.beginPath();
ctx.moveTo(0, 10);
ctx.lineTo(30, 10);
ctx.lineTo(15, 26);
const grd2 = ctx.createLinearGradient(0, 10, 0, 26);
grd2.addColorStop(0, "#FFFFFF"); //起始颜色
grd2.addColorStop(1, "#CE070A80"); //终点颜色
ctx.fillStyle = grd2; //以上面定义的渐变填充
ctx.fill(); //闭合形状并且以填充方式绘制出来
//填充三角形(等边)
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(30, 0);
ctx.lineTo(15, 16);
const grd1 = ctx.createLinearGradient(0, 0, 0, 16);
grd1.addColorStop(0, "#FFFFFF"); //起始颜色
grd1.addColorStop(1, "#CE070A80"); //终点颜色
ctx.fillStyle = grd1; //以上面定义的渐变填充
ctx.fill(); //闭合形状并且以填充方式绘制出来
css实现
1. 绘制渐变色的矩形
// html
<div className="triangle"></div>
// css
.triangle {
width: 30px;
height: 16px;
background-image: linear-gradient(#FFFFFF, #CE070A80);
}
2. 绘制两个和背景色同色的三角形
// css
.triangle:before {
position: absolute;
content: "";
width: 0;
height: 0;
border-right: 15px solid transparent;
border-bottom: 16px solid #FFFFFF;
}
.triangle:after {
position: absolute;
content: "";
right: 0; // 使绘制的三角形位于矩形右侧
width: 0;
height: 0;
border-left: 15px solid transparent;
border-bottom: 16px solid #FFFFFF;
}
【缺点】这种方式不能实现效果二,对于效果一不允许背景色带有透明度,实现效果有一定的局限性。
总结
对于简单的效果,建议使用方法二,如果要实现较为复杂的效果,可以使用方法一或者直接用图片替代(这种方式最简单直接)
canvas 实现渐变色填充的三角形的更多相关文章
- 使用canvas绘制渐变色矩形和使用按键控制人物移动
使用canvas绘制渐变色矩形和使用按键控制人物移动 1.使用canvas绘制渐变色矩形 效果演示 相关代码: <!DOCTYPE html> <html lang="en ...
- canvas快速绘制圆形、三角形、矩形、多边形
想看前面整理的canvas常用API的同学可以点下面: canvas学习之API整理笔记(一) canvas学习之API整理笔记(二) 本系列文章涉及的所有代码都将上传至:项目代码github地址,喜 ...
- canvas放射性渐变填充
今天在学习canvas时,遇到canvas的fillstyle有一个createRadialGradient()方法,创建放射性渐变. 上代码: <!DOCTYPE html> <h ...
- 小程序canvas绘制渐变色(简单入门)
呀,曾经的我是那么的单纯,天真,粗略的翻了一遍小程序画布API,没有看见渐变色,就以为不支持渐变色 于是在项目中直接把原本的渐变色换成了单一颜色展示,发现很low啊 但是,自从上次小程序API文档更新 ...
- html5 canvas用图案填充形状
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- html5 canvas 多个填充渐变形状
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- HTML5 Canvas渐进填充与透明
详细解释HTML5 Canvas中渐进填充的参数设置与使用,Canvas中透明度的设置与使 用,结合渐进填充与透明度支持,实现图像的Mask效果. 一:渐进填充(Gradient Fill) Canv ...
- Windows游戏编程大师技巧之三角形填充
一.三角形的种类 三角形一般可以分为如下的四种类型(这四种类型是对于计算机来说的,不是数学意义上的分类): 平顶三角形:就是在计算机中显示的上面两个顶点的Y坐标相同. 平底三角形:就是在计算机中显示的 ...
- Web前端学习笔记——Canvas
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
随机推荐
- 洛谷 P6478 - [NOI Online #2 提高组] 游戏(二项式反演+树形 dp)
题面传送门 没错这就是我 boom0 的那场 NOIOL 的 T3 一年前,我在 NOIOL #2 的赛场上折戟沉沙,一年后,我从倒下的地方爬起. 我成功了,我不再是从前那个我了 我们首先假设 A 拥 ...
- 【GS文献】全基因组选择模型研究进展及展望
目录 1. GS概况 2. GS模型 1)直接法 GBLUP 直接法的模型改进 ①单随机效应 ②多随机效应 2)间接法 间接法模型 基于间接法的模型改进 3. GS模型比较 模型比较结论 4.问题及展 ...
- selenium+chrome抓取数据,运行js
某些特殊的网站需要用selenium来抓取数据,比如用js加密的,破解难度大的 selenium支持linux和win,前提是必须安装python3,环境配置好 抓取代码: #!/usr/bin/en ...
- bwa比对软件的使用以及其结果文件(sam)格式说明
一.bwa比对软件的使用 1.对参考基因组构建索引 bwa index -a bwtsw hg19.fa # -a 参数:is[默认] or bwtsw,即bwa构建索引的两种算法,两种算法都是 ...
- 解决windows 10由于签名原因无法安装ADB driver 的问题
ADB Driver Installer (Automatically) In Windows 8 (8.1) or 10 64-bit you are unable to install unsig ...
- TOMCAT 搭建
第一步:下载 软件 和 JDK 第二个:https://www.oracle.com/java/technologies/javase-jdk16-downloads.html 传输到Linux里. ...
- 学习java 7.7
学习内容: 多态转型:向上转型 Animal a = new Cat(); a.eat(); 向下转型 Cat c = (Cat)a; c.eat(); 抽象方法没有方法体,抽象类中有抽象方法 抽象类 ...
- 商业爬虫学习笔记day2
1. get传参 (1)url中包含中文报错解决方法 urllib.request.quote("包含中文的url", safe = "string.printtable ...
- deque、queue和stack深度探索(上)
deque是可双端扩展的双端队列,蓝色部分就是它的迭代器类,拥有四个指针,第一个cur用来指向当前元素,first指向当前buffer头部,last指向当前buffer尾部,node指向map自己当前 ...
- STL全特化与偏特化
在泛型编程中,常常会使用一些非完全泛型的类模板,这就是特化. 如何理解全特化呢?如上图所示,第一个template class是空间配置器的类模板,第二个就是一个全特化的template class. ...