canvas绘制折线、使用线性渐变、径向渐变和lineJoin,lineCap属性
想了解更全面的canvas API可以点击右侧: canvas简介及常用APIcanvas绘制折线<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><style type="text/css">body {background-color
·
想了解更全面的canvas API可以点击右侧: canvas简介及常用API
canvas绘制折线
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
body {
background-color: #99CCFF;
}
#canvas {
background-color: #fff;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
</style>
</head>
<body>
<canvas id="canvas">
您的浏览器不支持,canvas标签
</canvas>
<script type="text/javascript">
// 获取画布
var canvas = document.getElementById('canvas');
// 设置画布的宽高
canvas.width = 800;
canvas.height = 600;
// 获取画笔
var ctx = canvas.getContext('2d');
/*
canvas 是基于状态的绘制
lineWidth:
值可以是number类型的,也可以是字符串类型,但是必须是整数
*/
// 第一条线段 #99CC33
ctx.beginPath();
// 将笔移动到指定的坐标位置
ctx.moveTo(100, 100);
// 设置轮廓颜色
ctx.strokeStyle = '#99CC33';
ctx.lineWidth = "1";
ctx.lineTo(300, 300); //绘制线段
ctx.lineTo(100, 500);
ctx.stroke(); //填充绘制的路径(以边框)
ctx.beginPath(); //创建一条新的路径
// 第二个折线 #FF9900
// 将笔移动到指定的坐标位置
ctx.moveTo(300, 100);
ctx.lineTo(500, 300); //绘制线段
ctx.lineTo(300, 500);
ctx.strokeStyle = '#F90';
ctx.stroke(); //填充绘制的路径(以边框)
ctx.beginPath();
// 第三条 折线 #FFCC00
// 将笔移动到指定的坐标位置
ctx.moveTo(500, 100);
ctx.lineTo(700, 300); //绘制线段
ctx.lineTo(500, 500);
ctx.strokeStyle = '#FFCC00';
ctx.fillStyle = "#CCCCCC";
ctx.lineWidth = 7;
ctx.closePath(); //闭合路径
ctx.stroke(); //填充绘制的路径(描边)
ctx.fill(); //绘制填充路径(填充)
</script>
</body>
</html>
canvas使用透明度(globalAlpha)
ctx.beginPath();
// 第三条 折线 #FFCC00
// 将笔移动到指定的坐标位置
ctx.moveTo(500,100);
ctx.lineTo(700,300);//绘制线段
ctx.lineTo(500,500);
ctx.strokeStyle='#FFCC00';
ctx.fillStyle="#CCCCCC";
ctx.lineWidth=7;//设置线宽
// 设置透明度 值是0(透明) - 1.0 (不透明)
ctx.globalAlpha=0.2;
ctx.closePath();//闭合路径
ctx.stroke();//填充绘制的路径(描边)
ctx.fill();//绘制填充路径(填充)
canvas使用线性渐变createLinearGradient
<script type="text/javascript">
// 获取画布
var canvas =document.getElementById('canvas');
// 设置画布的宽高
canvas.width=800;
canvas.height=600;
// 获取画笔
var ctx =canvas.getContext('2d');
ctx.beginPath();
// 创建矩形
ctx.rect(200,100,400,400);
// 添加线性渐变线
var grd= ctx.createLinearGradient(200,300,600,300);
// 添加颜色断点
grd.addColorStop(0,'black');
grd.addColorStop(0.5,'white');
grd.addColorStop(1,'black');
// 应用 渐变
ctx.fillStyle=grd;
ctx.closePath();//闭合路径
ctx.fill();//绘制填充路径(填充)
</script>
<script type="text/javascript">
// 获取画布
var canvas = document.getElementById('canvas');
// 设置画布的宽高
canvas.width = 800;
canvas.height = 600;
// 获取画笔
var ctx = canvas.getContext('2d');
// 添加线性渐变线
var grd = ctx.createLinearGradient(200, 300, 600, 300);
// 添加颜色断点
grd.addColorStop(0, '#FF6600');
grd.addColorStop(0.25, '#99CC33');
grd.addColorStop(0.5, '#3366CC');
grd.addColorStop(0.75, '#CCCC33');
grd.addColorStop(1, '#FF9933');
// 应用 渐变
ctx.fillStyle = grd;
ctx.strokeStyle = grd;
// 描边矩形
ctx.strokeRect(100, 50, 300, 50);
ctx.strokeRect(100, 100, 150, 50);
ctx.strokeRect(100, 150, 450, 50);
// 填充矩形
ctx.fillRect(200, 300, 300, 50);
ctx.fillRect(200, 350, 150, 50);
ctx.fillRect(200, 450, 450, 50);
</script>
canvas使用径向渐变createRadialGradient
<script type="text/javascript">
// 获取画布
var canvas = document.getElementById('canvas');
// 设置画布的宽高
canvas.width = 800;
canvas.height = 600;
// 获取画笔
var ctx = canvas.getContext('2d');
// 渐变线 径向的
var grd = ctx.createRadialGradient(400, 300, 100, 400, 300, 200);
// 添加颜色断点
grd.addColorStop(0, '#FF6600');
grd.addColorStop(0.25, '#99CC33');
grd.addColorStop(0.5, '#3366CC');
grd.addColorStop(0.75, '#CCCC33');
grd.addColorStop(1, '#FF9933');
ctx.fillStyle = grd;
ctx.fillRect(100, 100, 600, 400);
</script>
canvas使用lineJoin属性
<script type="text/javascript">
// 获取画布
var canvas = document.getElementById('canvas');
// 设置画布的宽高
canvas.width = 800;
canvas.height = 600;
// 获取画笔
var ctx = canvas.getContext('2d');
/*
canvas 是基于状态的绘制
lineWidth:
值可以是number类型的,也可以是字符串类型,但是必须是整数
*/
// 第一条线段 #99CC33
ctx.beginPath();
// 将笔移动到指定的坐标位置
ctx.moveTo(100, 100);
// 设置轮廓颜色
ctx.strokeStyle = '#99CC33';
ctx.lineWidth = "20";
// 设置两条线拐角的样式
ctx.lineJoin = 'round'; //圆角
ctx.lineTo(300, 300); //绘制线段
ctx.lineTo(100, 500);
ctx.stroke(); //填充绘制的路径(以边框)
ctx.beginPath(); //创建一条新的路径
// 第二个折线 #FF9900
// 将笔移动到指定的坐标位置
ctx.moveTo(300, 100);
ctx.lineTo(500, 300); //绘制线段
ctx.lineTo(300, 500);
ctx.strokeStyle = '#F90';
// 设置两条线拐角的样式
ctx.lineJoin = 'bevel'; //斜角
ctx.stroke(); //填充绘制的路径(以边框)
ctx.beginPath();
// 第三条 折线 #FFCC00
// 将笔移动到指定的坐标位置
ctx.moveTo(500, 100);
ctx.lineTo(700, 300); //绘制线段
ctx.lineTo(500, 500);
ctx.strokeStyle = '#FFCC00';
// 设置两条线拐角的样式
ctx.lineJoin = 'miter'; //直角
ctx.stroke(); //填充绘制的路径(描边)
</script>
canvas使用lineCap属性
<script type="text/javascript">
// 获取画布
var canvas = document.getElementById('canvas');
// 设置画布的宽高
canvas.width = 800;
canvas.height = 600;
// 获取画笔
var ctx = canvas.getContext('2d');
// 设置线的样式
ctx.lineWidth = 40;
ctx.strokeStyle = '#99CCFF'
ctx.beginPath();
ctx.moveTo(100, 100);
ctx.lineTo(700, 100);
// 设置两端的线帽
ctx.lineCap = 'butt'; //方形
ctx.stroke();
ctx.beginPath();
ctx.moveTo(100, 300);
ctx.lineTo(700, 300);
// 设置两端的线帽
ctx.lineCap = 'round'; //圆形
ctx.stroke();
ctx.beginPath();
ctx.moveTo(100, 500);
ctx.lineTo(700, 500);
// 设置两端的线帽
ctx.lineCap = 'square'; //方形
ctx.stroke();
// 绘制两条基准线
ctx.lineWidth = 3;
ctx.strokeStyle = 'lightcoral'
ctx.beginPath();
ctx.moveTo(100, 0);
ctx.lineTo(100, 600);
ctx.stroke()
ctx.beginPath();
ctx.moveTo(700, 0);
ctx.lineTo(700, 600);
ctx.stroke()
</script>
制作整理不易,以上内容均为原创(参考了部分官方文档和老师整理的案例)。如要引用请附上本文链接,如有疑问可以在评论区畅所欲言,作者看到会第一时间回复,欢迎交流!
更多推荐
已为社区贡献3条内容
所有评论(0)