canvas学习(二):渐变与曲线的绘制

一:createLinearGradient()线性渐变:

二:createLinearGradient() 放射状/圆形渐变:

三:createPattern()使用图片,画布,video

注意: createPattern() 的第一个参数也可以是canvas对象,video对象

四:曲线的绘制

1、arc()

实例:绘制圆角矩形

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
c.width = 800;
c.height = 800;
drawRoundRect(ctx,200,200,200,200,20); function drawRoundRect(ctx,x,y,width,height,radius){
ctx.save();
ctx.translate(x,y);
pathRoundRect(ctx,width,height,radius);
ctx.strokeStyle = "black";
ctx.stroke();
ctx.restore();
}
function pathRoundRect(ctx,width,height,radius) {
ctx.beginPath();
ctx.arc(width-radius,height-radius,radius,0,Math.PI/2);
ctx.lineTo(radius,height);
ctx.arc(radius,height-radius,radius,Math.PI/2,Math.PI);
ctx.lineTo(0,radius);
ctx.arc(radius,radius,radius,Math.PI,Math.PI*1.5);
ctx.lineTo(width-radius,0);
ctx.arc(width-radius,radius,radius,Math.PI*1.5,Math.PI*2);
ctx.closePath();
}

  

2:arcTo() :介于两个切线之间的弧     传送门

3:quadraticCurveTo() :贝塞尔二次曲线   互动模拟

4:bezierCurveTo():三次贝塞尔曲线   互动模拟

实例:画波浪线

function draw(ele,startX,startY,huduX,huduY,num,width,color) {
var canvas = document.getElementById(ele)
var ctx = canvas.getContext('2d')
ctx.lineWidth = width;
ctx.strokeStyle = color;
for(var i = 0; i<num; i++){
ctx.beginPath();
var startPoint = {
x: startX + (2*i*huduX),
y: startY
}
var endPoint = {
x: startPoint.x + (2*huduX),
y: startY
}
console.log(startPoint)
ctx.moveTo(startPoint.x, startPoint.y);
ctx.bezierCurveTo(startPoint.x+huduX, startPoint.y-huduY,startPoint.x+huduX, startPoint.y+huduY,endPoint.x, endPoint.y);
ctx.stroke();
}
}
draw('myCanvas',100,100,100,50,3,10,'#000')

  

实例2:草地

function draw2(){
var canvas = document.getElementById('myCanvas')
var ctx = canvas.getContext('2d') ctx.beginPath();
ctx.moveTo(0, 600);
ctx.bezierCurveTo(540, 400, 660, 800, 1200, 600);
ctx.lineTo(1200,800)
ctx.lineTo(0,800)
ctx.closePath() ctx.fillStyle="green"
ctx.fill(); }
draw2()

  

canvas学习(二):渐变与曲线的绘制的更多相关文章

  1. canvas学习和面向对象(二)

    Canvas 学习(二) 上一篇Canvas 学习(一)中我是用canvas绘制了一些基本和组合的图形. 现在开始绘制图片和动画帧,以及面向对象的升级版本. 还是一样,看代码,所有的代码都托管在git ...

  2. canvas学习(一)

    Canvas 学习之路 (一) canvas 是H5 里面神一样的东西,使得只是通过html和js就能做出非常棒的游戏和画面. 因为对前端无限的爱好,更加对canvas充满好奇,将我学习canvas的 ...

  3. 【canvas学习笔记二】绘制图形

    上一篇我们已经讲述了canvas的基本用法,学会了构建canvas环境.现在我们就来学习绘制一些基本图形. 坐标 canvas的坐标原点在左上角,从左到右X轴坐标增加,从上到下Y轴坐标增加.坐标的一个 ...

  4. canvas绘制二次贝塞尔曲线----演示二次贝塞尔四个参数的作用

    canvas中绘制二次贝塞尔曲线的方法为ctx.quadraticCurveTo(x1,y1,x2,y2); 四个参数分别为两个控制点的坐标.开始点即当前canvas中目前的点,如果想从指定的点开始, ...

  5. 基于canvas二次贝塞尔曲线绘制鲜花

    canvas中二次贝塞尔曲线参数说明: cp1x:控制点1横坐标 cp1y:控制点1纵坐标 x: 结束点1横坐标 y:结束点1纵坐标 cp2x:控制点2横坐标 cp2y:控制点2纵坐标 z:结束点2横 ...

  6. canvas学习笔记(上篇)-- canvas入门教程 -- canvas标签/方块/描边/路径/圆形/曲线

    [上篇] -- 建议学习时间4小时  课程共(上中下)三篇 此笔记是我初次接触canvas的时候的学习笔记,这次特意整理为博客供大家入门学习,几乎涵盖了canvas所有的基础知识,并且有众多练习案例, ...

  7. Canvas学习:封装Canvas绘制基本图形API

    Canvas学习:封装Canvas绘制基本图形API Canvas Canvas学习   从前面的文章中我们了解到,通过Canvas中的CanvasRenderingContext2D对象中的属性和方 ...

  8. canvas学习之API整理笔记(二)

    前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...

  9. canvas基础[二]教你编写贝塞尔曲线工具

    贝塞尔曲线 bezierCurveTo 在线工具 https://canvature.appspot.com/ [感觉这个好用一些] https://blogs.sitepointstatic.com ...

随机推荐

  1. What is a schema in a MySQL database?

    摘自:https://www.quora.com/What-is-a-schema-in-a-MySQL-database What is schema? In MySQL, physically, ...

  2. 32位ubuntu16.04桌面版系统安装

    1.下载并安装UltraISO软件安装之后插入U盘 2.然后打开软件点击文件打开找到下载的Ubuntu的ISO文件双击打开完成ISO文件的加载 3.点击启动选项(记得点开加载后的镜像,使之展开如图) ...

  3. DOM节点操作阶段性总结

    HTML中能看到的所有东西都是dom树中的一个节点,注意是“所有”,使用childNodes()可以看到,回车(换行)也是一个节点. 从上图可以看到,select中有四个option,但是有9个节点. ...

  4. Python入门 —— 2048实战(字符界面和图形界面)

    2048 game (共4种实现方法) 目录: .. 图形界面 ... pygame 和 numpy .. 字符界面 ... 第一种 ... curses ... wxpython ... 第二种 . ...

  5. python学习——单例模式

    在python中,单例模式在面试中非常重要.下面来给大家推荐一个Python中实现单例模式的博客地址. https://www.cnblogs.com/huchong/p/8244279.html

  6. Python学习笔记三:数据类型

    数据类型 整数int 32位机器,-2**31~2**31-1,即-2147483648~2147483647(4亿多) 64位机器,-2**63~2**63-1,非常大了. 长整型long 没有位数 ...

  7. C语言与汇编语言相互调用原理以及实例

    C语言与汇编语言相互调用原理以及实例 1.原理 其实不管是C语言还是汇编语言想要执行都是最终编译链接成为二进制文件. 这里一定要明确编译和链接是两个步骤,生成的文件格式也是不一样的. 编译生成的文件是 ...

  8. 从Github开源项目《云阅》所学到的知识

    感谢开源,感谢大神,才让我们这些菜鸟成长! 附上云阅开源项目地址:点我吧. 1.轮播图的实现. 现在的APP基本都会实现这个功能吧,然后一直都找不到好的第三方库,能够满足各种需求.然而碰到了这个开源库 ...

  9. 20145209刘一阳《JAVA程序设计》第1周学习总结

    20145209刘一阳<JAVA程序设计>第1周学习总结 本周任务 了解Java基础知识 了解JVM.JRE与JDK,并下载.安装.测试JDK 了解PATH.CLASSPATH.SOURC ...

  10. 北京Uber优步司机奖励政策(3月27日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...