Javascript高级编程学习笔记(87)—— Canvas(4)绘制路径
绘制路径
2D上下文支持许多在画布上绘制路径的方法
通过路径可以创造出复杂的形状和线条,要绘制路径首先必须调用beginPath()方法,表示开始绘制路径
然后再通过下列的方法绘制路径:
- arc(x,y,半径,起始角度,结束角度,旋转方向): 用于绘制圆形路径,以(x,y)为圆心,旋转方向为一个bool值表示是否以逆时针方向绘制,起始角度以及结束角度的单位都是弧度
- arcTo(x1,y1,x2,y2,半径): 从(x1,x2)为起点绘制一条到(x2,y2)的弧线,且该圆弧的半径为指定值
- bezierCurveTo(c1x,c1y,c2x,c2y,x,y): 从上一个点为起点绘制一条到(x,y)点的曲线,并且以(c1x,c1y)和(c2x,c2y)两点为控制点(即绘制贝塞尔曲线)
- lineTo(x,y): 从上一点绘制一条到(x,y)点的直线
- moveTo(x,y): 起点移到(x,y)点,不画线
- quadraticCurveTo(cx,cy,x,y): 从上一点绘制一条到(x,y)点的二次曲线,以(cx,cy)为控制点
- rect(x,y,width,height): 从点(x,y)开始绘制一个矩形,宽度为 width 高度为 height,这里绘制的是矩形路径,而不是一个独立的形状
当路径绘制完成后有几种不同的操作:
- closePath(): 如果希望绘制一条连接到路径起点的线条则可以调用该方法
- fill(): 用fillStyle来填充图形
- stroke(): 对路径描边
- clip(): 在路径上创建一个剪切区域
例如如果我们希望在canvas中绘制一个时钟,可以使用以下代码:
var drawing = document.getElementById("drawing"); // 确定浏览器对canvas的支持
if(drawing.getContext){
var context = drawing.getContext("2d"); // 开始路径
context.beginPath(); // 绘制外圆
context.arc(100,100,99,0,2*Math.PI,false); // 绘制内圆
context.moveTo(194,100);
context.arc(100,100,94,0,2*Math.PI,false); // 绘制分针
context.moveTo(100,100);
context.lineTo(100,15); // 绘制时针
context.moveTo(100,100);
context.lineTo(35,100); // 描边路径
context.stroke();
}
为了方便我们对路径的控制, 2D上下文还提供了一个方法
isPointInPath(x,y) 该方法用于判断(x,y)是否位于路径上,在路径关闭前有效
Javascript高级编程学习笔记(87)—— Canvas(4)绘制路径的更多相关文章
- Javascript高级编程学习笔记(86)—— Canvas(3)绘制矩形
绘制矩形 矩形是唯一一种可以直接在2D上下文中绘制的形状. 与矩形有关的方法包括: fillRect() strokeRect() clearRect() 上述方法都接收四个参数: 绘制矩形的 X 坐 ...
- Javascript高级编程学习笔记(94)—— Canvas(11) 合成
合成 除了之前介绍的属性之外,还有两个属性会应用到整个2d上下文中; globalAlpha 用于指定所有绘制的透明度 globalComposition 用于表示后绘制的图形怎样与先绘制的图形进行结 ...
- Javascript高级编程学习笔记(93)—— Canvas(10) 模式及图像数据
模式 模式其实就是重复的图像,用来填充或描边图形 要创建一个新模式,可以调用 createPattern()并传入两个参数 一个HTML img元素 用于表示如何重复的字符串 "repeat ...
- Javascript高级编程学习笔记(90)—— Canvas(7) 绘制图像
绘制图像 2D绘图上下文内置了对图像的支持 如果希望将一幅图绘制到画布上,可以使用 drawImage() 的方法 该方法有三种不同的参数数组合以对应不同的应用场景 将<img>绘制到画布 ...
- Javascript高级编程学习笔记(89)—— Canvas(6) 变换
变换 通过上下文的变化,可以对图像进行处理后再将其绘制到画布上 当我们创建上下文时,会以默认值初始化变化矩阵,在默认的变换矩阵下所有处理都按描述直接绘制. 而当我们为上下文应用变换时,会导致使用不同的 ...
- Javascript高级编程学习笔记(88)—— Canvas(5)绘制文本
绘制文本 同样的,canvas也为绘制文本提供了相应的方法. 2D上下文提供的文本绘制方法主要有两个: fillText() strokeText() 这两个方法都接受四个参数 要绘制的文本字符串 绘 ...
- Javascript高级编程学习笔记(85)—— Canvas(2)2D上下文
2D上下文 使用2D上下文提供的方法可以绘制简单的2D图形,如矩形,弧线和路径; 2D上下文的坐标开始域<canvas>元素的左上角,原点坐标为(0,0) 后续所有操作的计算都基于原点,x ...
- Javascript高级编程学习笔记(84)—— Canvas(1)基本用法
Canvas绘图 Canvas自HTML5引入后,由于其炫酷的效果成为HTML5新增功能中最受欢迎的部分 Canvas元素通过在页面中设定一个区域,然后就可以使用JS在其中绘制图形 <canva ...
- Javascript高级编程学习笔记(91)—— Canvas(8) 阴影
阴影 2D上下文将会根据以下属性为形状或路径绘制阴影 shadowColor: 用于设置阴影颜色,默认为黑色 shadowOffsetX: 形状或路径X方向的阴影偏移量,默认为0 shadowOffs ...
随机推荐
- 如何把遗留的Java应用托管在Service Fabric中
一.概述 众所周知,微服务化尤其对遗留系统进行微服务化一般采用"Lift and Shift"的模式进行. Service Fabric作为一个微服务托管平台,不仅仅可以在上面跑. ...
- 在Linux(Centos7)系统上对进行Hadoop分布式配置以及运行Hadoop伪分布式实例
在Linux(Centos7)系统上对进行Hadoop分布式配置以及运行Hadoop伪分布式实例 ...
- 在VUE-CLI 3下的第一个Element-ui项目(菜鸟专用)
vue-cli3.0使用及配置 (https://www.cnblogs.com/xzqyun/p/10779891.html ) 以上是 vue-cli3.0使用及配置 这里我们来引用基于v ...
- Codeforces 939E Maximize! (三分 || 尺取)
<题目链接> 题目大意:给定一段序列,每次进行两次操作,输入1 x代表插入x元素(x元素一定大于等于之前的所有元素),或者输入2,表示输出这个序列的任意子集$s$,使得$max(s)-me ...
- 【C语言编程练习】7.1 线型表就地逆置
写在前面的话:直接从第5章跳到了第7章数据结构的趣题,原因是前面的数学趣题做久了,会觉得稍许疲倦,所以想“变个口味”,以后数学趣题和数据结构混合着练习. 1. 题目要求 编写一个函数,实现顺序表的就地 ...
- 2018-2019-2 网络对抗技术 20162329 Exp2 后门原理与实践
目录 1.实践基础 1.1.什么是后门 1.2.基础问题 2.实践内容 2.1.使用netcat获取主机操作Shell,cron启动 2.2.使用socat获取主机操作Shell, 任务计划启动 2. ...
- 洛谷p3801:红色的幻想乡
初见完全没有思路.....感觉像是线段树 但二维感觉完全不可做嘛 于是只能去看了看题解 然而还是疯狂爆零+WA.. 和yycc神犇调了两三个小时才调出来... ——————以下个人理解 考虑到每次的修 ...
- git 实际操作
1.把文件添加到版本库中. 所有的版本控制系统只能跟踪文本文件的改动 下面先看下demo如下演示: 我在版本库gittest目录下新建一个记事本文件 1.txt 内容如下:1111111 第一步:使用 ...
- FTP连接超时
今天程序在连接FTP服务器,突然无法连接,用Windows 的 Explorer能正常连接,但用 WebRequest.WebResponse连接时,总是抛出连接超时异常. 后查找相关资料,原因是:程 ...
- iOS 开发中keyChain的使用
我们开发中很多数据都是直接存储到本地沙盒中的,这样当应用程序被卸载后,本地的数据都会被删除.如果我们不想让数据在卸载程序的时候丢失,我们可以用KeyChain来存储我们想要的数据.苹果提供了原生的一套 ...