Canvas:绘制路径
Canvas:绘制路径
绘制路径
图形的基本元素是路径。路径是[通过不同颜色和宽度的线段或曲线相连形成的不同形状的]点的集合。一个路径,甚至一个子路径,都是闭合的。
使用路径绘制图形需要一些额外的步骤。
- 首先,你需要创建路径起始点。
- 然后你使用画图命令去绘制路径。
- 之后把路径进行封闭。
- 一旦路径生成,你就能通过描边或填充路径区域来渲染图形。
函数解释
beginPath()
【说明】:清空子路径列表,并新建一条路径。
【例子】:绘制两条颜色不同的直线。
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d'); // First path
ctx.beginPath();
ctx.strokeStyle = 'blue';
ctx.moveTo(20, 20);
ctx.lineTo(200, 20);
ctx.stroke(); // Second path
ctx.beginPath();
ctx.strokeStyle = 'green';
ctx.moveTo(20, 20);
ctx.lineTo(120, 120);
ctx.stroke();
说明:如果我们在Second Path部分删掉 ctx.beginPath(); 那么最后一行的stroke将会重新绘制所有的两条路径,也就是说第一条路径被绘制了两次,且第二次的效果覆盖了第一次。
moveTo()/lineTo()
【说明】
moveTo:将一个新的子路径的起始点移动到(x,y)坐标的方法。
lineTo:使用直线连接子路径的终点到x,y坐标的方法(并不会真正地绘制)。
说明:这两个方法都不会真正绘制图形,相当于隐形墨水,来描述路径,我们知道stroke和fill方法才会真正描边或者填充图形。
closePath()
【说明】:尝试从当前点添加直线到子路径的开始点,来闭合路径。
【实例】:绘制一个三角形
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d'); ctx.beginPath();
ctx.moveTo(20, 150); // Move pen to bottom-left corner
ctx.lineTo(120, 20); // Line to top corner
ctx.lineTo(220, 150); // Line to bottom-right corner
ctx.closePath(); // Line to bottom-left corner
ctx.stroke();
说明:我们只使用lineTo画了两条子路径,但是效果是一个三角形,这是因为最后的closePath(),绘制了一条指向开始点的直线。
实例:绘制一个网格
代码
<canvas id="canvas"></canvas>
<script type="text/javascript">
var canvas = document.getElementById("canvas");
var context = canvas.getContext('2d'); function drawGrid(context,color,stepx,stepy) {
context.strokeStyle = color;
context.lineWidth = 0.5;
for(var i = stepx+0.5;i<context.canvas.width;i+=stepx)
{
context.beginPath();
context.moveTo(i,0);
context.lineTo(i,context.canvas.height);
context.stroke();
}
for(var i = stepy+0.5;i<context.canvas.height;i+=stepy)
{
context.beginPath();
context.moveTo(0,i);
context.lineTo(context.canvas.width,i);
context.stroke();
}
} drawGrid(context,"lightgray",10,10);
</script>
效果
Canvas:绘制路径的更多相关文章
- canvas绘制路径
canvas绘制路径 方法 beginPath() 创建一个新的路径 lineTo() 描绘路径 closePath() 沿着路径画直线,并且画点移动到路径开头 stroke() 绘制形状 fill( ...
- (四)canvas绘制路径
save() 样式不受污染的起始范围 shadowOffsetX 阴影x轴的距离 shadowOffsetY 阴影y轴的距离 shadowBlur 模糊度 shadowColor 阴影颜色 resto ...
- canvas学习总结三:绘制路径-线段
Canvas绘图环境中有些属于立即绘制图形方法,有些绘图方法是基于路径的. 立即绘制图形方法仅有两个strokeRect(),fillRect(),虽然strokezText(),fillText() ...
- Javascript高级编程学习笔记(87)—— Canvas(4)绘制路径
绘制路径 2D上下文支持许多在画布上绘制路径的方法 通过路径可以创造出复杂的形状和线条,要绘制路径首先必须调用beginPath()方法,表示开始绘制路径 然后再通过下列的方法绘制路径: arc(x, ...
- canvas绘制折线路径动画
最近有读者加我微信咨询这个问题: 其中的效果是一个折线路径动画效果,如下图所示: 要实现以上路径动画,一般可以使用svg的动画功能.或者使用canvas绘制,结合路径数学计算来实现. 如果用canva ...
- 使用canvas绘制一个时钟
周末学习canvas的一些基础功能,顺带写了一个基础的时钟.现在加工一下,做的更好看一点,先放上效果图: 谈一些自己的理解: (1).要绘制一个新的样式(不想被其他样式影响,或者影响到其他样式),那么 ...
- 学习笔记:HTML5 Canvas绘制简单图形
HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...
- Canvas绘制图形
1.Canvas绘制一个蓝色的矩形 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...
- [canvas]利用canvas绘制自适应的折线图
前段时间学习了用canvas绘制折现图,且当画布变换大小,折现图会随之变化,现附上代码 <!DOCTYPE html> <html lang="en"> & ...
随机推荐
- 常用cms
最近,朋友要建站让我帮着推荐个好的CMS(内容管理系统),个人认为其实选择哪个CMS并不重要,除了对搜索引擎的亲好外,个人的使用操作习惯和对所选CMS系统的熟悉程度有很大关系. 这里为需要建站但又徘徊 ...
- C语言中文网
网址:http://c.biancheng.net/cpp/ 涵盖如下:
- js 判断数组
这么基础的东西实在不应该再记录了,不过嘛,温故知新~就先从数据类型开始吧 js六大数据类型:number.string.object.Boolean.null.undefined string: 由单 ...
- ASP.NET中Dictionary基本用法实例分析
本文实例讲述了ASP.NET中Dictionary基本用法.分享给大家供大家参考,具体如下: //Dictionary位于System.Collections.Generic命名空间之下 /* * ...
- Material design之New Widgets(RecyclerView CardView)
New Widgets:提供了两个新的控件 RecyclerView CardView 这两个控件包含在了Android L的support library中, 他们可以用于显示复杂的布局而且都默认采 ...
- 剑指offer(13)-栈的压入、弹出序列 九度1366
题目来自剑指offer系列 九度 1366:http://ac.jobdu.com/problem.php?pid=1367 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列 ...
- 笔记:C语言图形基本函数及实例五子棋游戏
初始化图形界面 int gdriver; int gmode; gdriver = DETECT; initgraph(&gdriver,&gmode,"" ); ...
- 使用Lingo增强JMS
虽然activemq+jencks的jms轻量级解决方案已经很好地在psa中work了,尤其spring的JmsTemplate使得代码更简单,但是还是存在问题. 问题来自暑期做psa的时候,link ...
- C++中获取时间
#include<time.h> //获取时间头文件//-------------------------------------- clock_t start_time=clock ...
- java动态编译 (java在线执行代码后端实现原理)
需求:要实现一个web网页中输入java代码,然后能知道编译结果以及执行结果 类似于菜鸟java在线工具的效果:https://c.runoob.com/compile/10 刚开始从什么概念都没有到 ...