1. 获取绘图上下文

  var mycanvas = document.getElementById('mycanvas');

  var context = mycanvas.getContext('2d');

2. 绘图函数

    注:x = positionX y= position Y w = width h = height

    绘制矩形:

      strokeRect(x,y,w,h); -----边框矩形

      fillRect(x,y,w,h); ----填充矩形

    清除区域:

      clearRect(x,y,w,h);

    绘制路径:

      beginPath();清楚路径列表,每次绘制新的形状之前都要调用

      moveTo();开始绘制的坐标

      lineTo();绘制到哪里

      closePath();关闭路径形成闭合的图形,如果不想形成闭合图形就不需要添加

      stroke();执行描边,连线!!!!!!!!!!!!

      strokeStyle = '(十六进制颜色值)或(颜色英文拼写)';  设置描边颜色

      lineWidth();设置描边线条的粗细

      fillStyle = '(十六进制颜色值)或(颜色英文拼写)'; 设置填充颜色

      fill(); 执行填充

    绘制弧形:

      注:弧度 = 角度 * (Math.PI / 180)

      arc(x,y,radius(半径),startAngle(起始弧度),endAngle(终止弧度),counterclockwise(是否逆时针绘制));

      arcTo(x1,y1,x2,y2,ridius(弧的半径,半径小则离切线角越近));

      

    绘制2次贝塞尔曲线:

      quadraticCurveTo(cpx(控制点坐标x),cpy(控制点坐标y),x(末端点x),y(末端点y));

      与moveTo();的起始点配合使用。

    绘制三次贝塞尔曲线:

      bezierCurveTo(cpx1,cpy1,cpx2,cpy2,x,y); 有两个控制点,最后的x,y是结束点。

      与moveTo();的起始点配合使用。

  clip();定义遮罩层,只能显示遮罩层之间的内容

  透明度:使用rgba();

  线性渐变色:

    var  grandient = createLinearGradient(startX,startY,endX,endY) ;定义渐变区间

    grandient.addColorStop(0(比例),"blue");

    grandient.addColorStop(0.5(比例),"red");

    ctx.fillStyle = grandient;

    ctx.fill();

  放射渐变:

    var g = createRadialGradient(x1,y1,r1,x2,y2,r2); 两个圆的相交区域为渐变区间

    g.addColorStop();

    ……

    ctx.fillStyle = g;

    ctx.fill();

例子:绘制台球桌:

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body style="text-align: center;">
<canvas id="mycanvas" width="500" height="500"/>
</body>
<script type="text/javascript">
var mycanvas = document.getElementById('mycanvas');
var ctx = mycanvas.getContext('2d');
ctx.beginPath();
ctx.fillStyle = "#00ff00";
ctx.fillRect(0,0,500,500); //绘制白球
DrawWhiteTableBall(50,250,ctx); //绘制红球组
DrawRedTableBall(300,250,ctx); DrawRedTableBall(335,230,ctx);
DrawRedTableBall(335,270,ctx); DrawRedTableBall(370,210,ctx);
DrawRedTableBall(370,250,ctx);
DrawRedTableBall(370,290,ctx); DrawRedTableBall(405,190,ctx);
DrawRedTableBall(405,230,ctx);
DrawRedTableBall(405,270,ctx);
DrawRedTableBall(405,310,ctx); function DrawRedTableBall(positionX,positionY,ctx){
ctx.beginPath();
ctx.arc(positionX,positionY,20,0,360*Math.PI/180,false);
var g = ctx.createRadialGradient(positionX-4,positionY-4,5,positionX,positionY,20);
g.addColorStop(0,"#ffffff");
g.addColorStop(1,"#ff0000");
ctx.fillStyle = g;
// ctx.fillRect(positionX,positionY,positionX+20,positionY+20);
ctx.fill();
} function DrawWhiteTableBall(positionX,positionY,ctx){
ctx.beginPath();
ctx.arc(positionX,positionY,20,0,360*Math.PI/180,false);
var g = ctx.createRadialGradient(positionX-4,positionY-4,5,positionX,positionY,20);
g.addColorStop(0,"rgba(255,255,255,1)");
g.addColorStop(1,"rgba(255,255,255,0.8)");
ctx.fillStyle = g;
ctx.fill();
// ctx.fillRect(positionX,positionY,positionX+20,positionY+20);
}
</script>
</html>

放射渐变的理论参考这个大佬的讲解,写的很清楚:

  https://www.cnblogs.com/tianma3798/p/5895811.html

Html5 Canvas介绍的更多相关文章

  1. HTML5 Canvas(画布)实战编程初级篇:基本介绍和基础画布元素

    欢迎大家阅读HTML5 Canvas(画布)实战编程初级篇系列,在这个系列中,我们将介绍最简单的HTML5画布编程.包括: 画布元素 绘制直线 绘制曲线 绘制路径 绘制图形 绘制颜色,渐变和图案 绘制 ...

  2. 介绍4种HTML5 Canvas库

    1.bHive.js Library http://www.bhivecanvas.com/ bHive能创建丰富的用户体验.动画.游戏,能够使开发更简单. demo: http://www.bhiv ...

  3. HTML5 程序设计 - 使用HTML5 Canvas API

    请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...

  4. 赠书:HTML5 Canvas 2d 编程必读的两本经典

    赠书:HTML5 Canvas 2d 编程必读的两本经典 这两年多一直在和HTML5 Canvas 打交道,也带领团队开发了世界首款基于HTML5 Canvas 的演示文档工具---AxeSlide( ...

  5. html5 canvas常用api总结(一)

    1.监听浏览器加载事件. window.addEventListener("load",eventWindowLoaded,false); load事件在html页面加载结束时发生 ...

  6. HTML5 Canvas绘制转盘抽奖

    新项目:完整的Canvas转盘抽奖代码 https://github.com/givebest/GB-canvas-turntable 演示 http://blog.givebest.cn/GB-ca ...

  7. 简介 jCanvas:当 jQuery遇上HTML5 Canvas

    https://github.com/caleb531/jcanvas HTML5 可以直接在你的网页中使用 <canvas> 元素及其相关的 JavaScript API绘制的图形. 在 ...

  8. HTML5 CANVAS 实现图片压缩和裁切

    原文地址:http://leonshi.com/2015/10/31/html5-canvas-image-compress-crop/?utm_source=tuicool&utm_medi ...

  9. 如何使用 HTML5 Canvas 制作水波纹效果

    今天,我们继续分享 JavaScript 实现的效果例子,这篇文章会介绍使用 JavaScript 实现水波纹效果.水波效果以图片为背景,点击图片任意位置都会触发.有时候,我们使用普通的 Javasc ...

随机推荐

  1. 如何在ASP.NET Core中自定义Azure Storage File Provider

    文章标题:如何在ASP.NET Core中自定义Azure Storage File Provider 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p ...

  2. Java基础练习2(构造方法)

    1.以下关于面向对象概念的描述中,不正确的一项是() A.在构造方法中,this()只能出现在构造方法第一行位置 B.在构造方法中,super()只能出现在构造方法第一行位置 C.this()和sup ...

  3. PowerDesigner制作UMI图

    首先我们要下载一个PowerDesigner,自己上百度下载哈!嘻嘻!!! 我这个是汉化版的 然后点这个,再到空白的地方点一下就创建好了. 然后单击右边箭头然后双击 不管是制作的图还是代码生成的图都可 ...

  4. Django学习之十三:提高页面开发效率减少冗余的模板系统

    目录 Django 模板 模板语法 逻辑语法 函数式过滤器 内置filter 功能tag 注释 内置tag 导入三方tag and filter(load) 过滤器和功能tag的区别 自定义tag和f ...

  5. Web地图导图总结

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 地图端展示了各类制图效果,用户希望可以一键生成报表,其中核心 ...

  6. 产品经理之UML表达业务逻辑

    文章大纲 一. 什么是UML二. UML基础介绍三.UML实例介绍四.参考文档   一. 什么是UML   UML(Unified Modeling Language,统一建模语言) 是一种在软件设计 ...

  7. (四)图数据neo4j用户管理

    1.用户管理 neo4j可通过内置函数,进行用户的创建.查看.删除. (1)用户创建; CALL dbms.security.createUser(name,password,requridchang ...

  8. Python:如何用一行代码获取上个月是几月

    现在转一篇志军100发于公众号 Python之禅的文章: Python:如何用一行代码获取上个月是几月 抱歉我用了个有点标题党的标题,因为担心你错过了本文,但内容绝对干货,本文介绍的关于Python时 ...

  9. Java遍历List集合的4种方式

    public class Test { public static void main(String[] args) { // 循环遍历List的4中方法 List<String> str ...

  10. Java的Random类详解

    Random类专门用于生成一个伪随机数,它有两个构造器:一个构造器使用默认的种子(以当前时间作为种子),另一个构造器需要程序员显示传入一个long型整数的种子. Random类比Math类的rando ...