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. TensorFlow读写数据

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 从零开始学TensorFlow[01-搭 ...

  2. windows,分割路径.得出目录

    #include <windows.h> #include <vector> #include <stdio.h> #include <string> ...

  3. .net mvc前台如何接收和解析后台的字典类型的数据

    很久没有写博客了,最近做了一个公司门户网站的小项目,其中接触到了一些我不会的知识点,今日事情少,便记录一下,当时想在网上搜索相关的内容,但是没有找到. 今天想记录一下这样一个小的需求的做法.先说一下我 ...

  4. c# 事件的订阅发布Demo

    delegate void del(); class MyClass1 { public event del eventcount;//创建事件并发布 public void Count() { ; ...

  5. openlayers4 入门开发系列之地图工具栏篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  6. Flutter 即学即用系列博客——07 RenderFlex overflowed 引发的思考

    背景 在进行 Flutter UI 开发的时候,控制台报出了下面错误: flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY >╞════════ ...

  7. 使用Git将项目托管到码云及从码云导入项目到本地

    前言 码云+Git+IntellJ IDEA 欢迎转载,请注明作者和出处哦☺ Git 的安装及使用的教程 ​​​​ 最好不要在官网下载,官网下载要vpn而且速度还很慢 . 推荐在 https://gi ...

  8. JavaScript 中的四舍五入

    在 JavaScript 中,对数值进行四舍五入操作的场景有以下几种: 向上取整:ceil 向下取整:floor 四舍五入:round 固定精度:toFixed 固定长度:toPrecision 取整 ...

  9. 《iOS 11 安全区域适配总结》

    本文来自于腾讯Bugly公众号(weixinBugly),作者:sonialiu,未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/W1_0VrchCO50owhJ ...

  10. Python写爬虫爬妹子

    最近学完Python,写了几个爬虫练练手,网上的教程有很多,但是有的已经不能爬了,主要是网站经常改,可是爬虫还是有通用的思路的,即下载数据.解析数据.保存数据.下面一一来讲.   1.下载数据 首先打 ...