1.填充和描边

(1)fillStyle

(2)strokeStyle

2.绘制矩形

(1)fillRect()

(2)strokeRect()

(3)clearRect()   :清除画布上的矩形区域

<canvas id = "drawing" width="400px" height="400px" style="background-color: #d1f1ff"></canvas>
         var drawing = document.getElementById("drawing");
if(drawing.getContext){
var ct = drawing.getContext("2d");
} ct.fillStyle = "#ff0000";
ct.fillRect(10,10,50,50); ct.fillStyle = "rgba(0,0,255,0.5)";
ct.fillRect(30,30,50,50); ct.clearRect(40,40,10,10);

3.绘制路径

  (1)arc(x,y,radius,startAngle,endAngle,countercockwise)

      以(x,y)画圆,radius为半径,startAngle:起始角度,endAngle:结束角度,countercockwise:是否按逆时针方向转动,false表示按逆时针转动。

  (2)arcTo(x1,y1,x2,y2,radius)

      从(x1,y1)到(x2,y2)画一条半径为radius的弧线

  (3)bezierCurveTo(c1x,c1y,c2x,c2y,x,y)

     贝塞尔曲线,详细的看我的SVG--贝塞尔曲线的博客

  (4)lineTo(x,y)

     从上一点开始画一条线到(x,y)

  (5)moveTo(x,y)

      将绘图游标移到(x,y)

  (6)quadraticCurveTo(cx,cy,x,y)

     绘制二次曲线到(x,y),以(cx,cy)作为控制点

  (7)rect(x,y,width,height)

     从(x,y)开始绘制一个矩形

4.绘制文本

  font: 文本样式,大小,字体

  textAlign:文本对齐方式(start,end,left,right,center)

  textBaseline :文本的基线

  ct.fillText("文本",100,20):

5.变换

  rotate(): 旋转

  scale():缩放

  translate(x,y) :移动到(x,y)

  transform():

  setTransform():

     ct.beginPath();
//外圆
ct.arc(100,100,99,0, 2*Math.PI ,false); //内圆
ct.moveTo(194,100);
ct.arc(100,100,94,0, 2*Math.PI ,false); ct.translate(100,100);
//旋转
ct.rotate(90*Math.PI/180); ct.moveTo(0,0);
ct.lineTo(0,-85); ct.moveTo(0,0);
ct.lineTo(-65,0); ct.stroke();

这是旋转90度后

6.绘制图像

 var img = new Image();
img.src = "share1.jpg"; ct.drawImage(img ,0,0,120,120);

7.阴影

  阴影共四个属性设置:

  shadowColor :阴影颜色

  shadowBlur :模糊像素数

  shadowOffsetX :阴影偏移量

  shadowOffsetY :阴影偏移量

     //设置阴影
ct.shadowColor="rgba(0,0,0,0.5)";
ct.shadowBlur = 4;
ct.shadowOffsetX = 5;
ct.shadowOffsetY = 5; //红色矩形
ct.fillStyle="#ff0000"
ct.fillRect(10,10,50,50); //蓝色矩形
ct.fillStyle="rgba(0,0,255,1)"
ct.fillRect(30,30,50,50);
ct.stroke();

8.渐变

渐变由CanvasGradient实例表示。

创建线性渐变:createLinearGradient(x,y,_x,_y)

创建线性渐变:createRadialGradient(x,y,radius,_x,_y,_radius)

(1)线性渐变:

     //红色矩形
ct.fillStyle="#ff0000"
ct.fillRect(10,10,50,50); //渐变色矩形
var gradient = ct.createLinearGradient(30,30,70,70);
gradient.addColorStop(0,"white");
gradient.addColorStop(1,"black") ct.fillStyle=gradient;
ct.fillRect(30,30,50,50);
ct.stroke();

     //用于更好定位的渐变函数
function createRectLinearGradient(context,x,y,width,height){
return context.createLinearGradient(x,y,x+width,y+height);
} //渐变色矩形
var gradient = createRectLinearGradient(ct,30,30,50,50);
gradient.addColorStop(0,"white");
gradient.addColorStop(1,"black") ct.fillStyle=gradient;
ct.fillRect(30,30,50,50);
ct.stroke();

(2)径向渐变:

前三个参数为起点圆的圆心和半径,后三个参数为终点圆的圆心和半径

     //红色矩形
ct.fillStyle="#ff0000"
ct.fillRect(10,10,50,50); //径向渐变
var gt = ct.createRadialGradient(55,55,10,55,55,30);
gt.addColorStop(0,"white");
gt.addColorStop(1,"black");
ct.fillStyle = gt;
ct.fillRect(30,30,50,50);

9.渐变

渐变由CanvasGradient实例表示。

创建线性渐变:createLinearGradient(x,y,_x,_y)

创建线性渐变:createRadialGradient(x,y,radius,_x,_y,_radius)

(1)线性渐变:

canvas之2D上下文的更多相关文章

  1. 《JAVASCRIPT高级程序设计》Canvas绘图-2D上下文

    Canvas是HTML5添加的新元素,这个元素负责在页面中设定一个区域,然后通过JavaScript动态的在这个区域绘制图形.<canvas>由几组API组成,除了具备基本绘图能力的2D上 ...

  2. Javascript高级编程学习笔记(85)—— Canvas(2)2D上下文

    2D上下文 使用2D上下文提供的方法可以绘制简单的2D图形,如矩形,弧线和路径; 2D上下文的坐标开始域<canvas>元素的左上角,原点坐标为(0,0) 后续所有操作的计算都基于原点,x ...

  3. 如何使用canvas进行2d绘图

    canvas 的 2D context 可以绘制简单的 2D 图形.它的 2D context 坐标开始于 <canvas> 元素的左上角,原点坐标是(0,0).所有的坐标值都基于这个原点 ...

  4. 图片在 canvas 中的 选中/平移/缩放/旋转,包含了所有canvas的2D变化,让你认识到数学的重要性

    1.介绍 canvas 已经出来好久了,相信大家多少都有接触. 如果你是前端页面开发/移动开发,那么你肯定会有做过图片上传处理,图片优化,以及图片合成,这些都是可以用 canvas 实现的. 如果你是 ...

  5. css3 matrix 2D矩阵和canvas transform 2D矩阵

    一看到“2D矩阵”这个高大上的名词,有的同学可能会有种畏惧感,“矩阵”,看起来好高深的样子,我还是看点简单的吧.其实本文就很简单,你只需要有一点点css3 transform的基础就好. 没有前戏,直 ...

  6. 2D上下文

    js中说明的上下文表示的意思为C++中作用域(个人理解),因此2D上下文说明的是这个2D的作用域 像素:用来描述图片清晰度的小矩阵 填充和描边 填充:context.fillStyle = " ...

  7. canvas用2d渲染出3d的感觉

    好久没有写博客了,深究动画其实也就是setTimeout setInterval requestAnimationFrame很多人可能不熟悉requestAnimationFrame但是事实上和set ...

  8. JavaScript入门之Canvas(一): 2D Context

    概念 Canvas    是 HTML5 新增的元素,可用于通过使用JavaScript中的脚本来绘制图形.例如,它可以用于绘制图形,制作照片,创建动画,甚至可以进行实时视频处理或渲染.自HTML5添 ...

  9. HTML5移动开发学习笔记之Canvas基础

    1.第一个Canvas程序 看的是HTML5移动开发即学即用这本书,首先学习Canvas基础,废话不多说,直接看第一个例子. 效果图为: 代码如下: <!DOCTYPE html> < ...

随机推荐

  1. codeforces 519C. A and B and Team Training 解题报告

    题目链接:http://codeforces.com/contest/519/problem/C 题目意思:给出 n 个  experienced participants  和 m 个 newbie ...

  2. 数据结构-链表逆置(c++模板类实现)

    链表结点类模板定义: template <class T> class SingleList; template <class T> class Node { private: ...

  3. AIX系统中安装Java6全过程(全部)

    ====================================================   From: GCG TSC pSeries <ibm800p@cn.ibm.com& ...

  4. 【leetcode】Remove Duplicates from Sorted Array I & II(middle)

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  5. 3ds max移除几何体的线段

    将几何体转化成可编辑多边形,然后选中线段,调出上图的模式,然后选中删除.

  6. eclipse failed to create the java virtual machine 问题图文解析

    eclipse failed to create the java virtual machine 问题图文解析 分类: java常用软件异常2010-10-02 23:45 73200人阅读 评论( ...

  7. Java -- String、StringBuffer、StringBuilder

    原文:http://blog.csdn.net/kingzone_2008/article/details/9220691 String:不可变. StringBuffer(JDK1.0):可变,线程 ...

  8. MVC - 18.缓存

    1.使用输出缓存 (不灵活,问题比较多,不建议使用) /// <summary> /// datagrid列表 /// </summary> /// <returns&g ...

  9. Eclipse 控制console

    http://blog.csdn.net/leidengyan/article/details/5686691

  10. Myeclipse 2016 & 2014 下载

    myeclipse-2016-ci-6-offline-installer-windowshttps://downloads.genuitec.com/downloads/myeclipse/inst ...