<canvas>元素是HTML5中的绘图元素,通过定义一个画布区域,然后使用javascript动态地在这个区域里面绘制图形,对于2D和3D图形都可以绘制,我们将其分成2D上下文和WebGL两大块内容来一起来学习

<canvas id="draw" width="500" height="400"></canvas>

用canvas 绘制图形时经过以下几个步骤:

1.获取canvas对象.

2.使用canvas对象的getContext方法来获取图形上下文,在draw函数中将参数设为2d.

3.填充与绘制边框 

填充(使用指定样式[颜色、渐变、图像、模式等]填充图形)和描边(图形的边缘画线)分别为fillStyle和strokeStyle,需要注意一点,fillStyle和strokeStyle会被延用至重新设置这两个值!

4.lineWidth用来指定图形边框的线宽。

5.fillStyle和strokeStyle分别指定绘图时填充的颜色 和边框的颜色。

var draw = document.getElementById(‘draw’);
//确定是否支持canvas
if(draw.getContext){
//这样就取得绘图上下文对象的引用,画图便可以开始了!
var context = draw.getContext(‘2d’);

//绘制黑色矩形
context.strokeStyle = “#000”;
context.strokeRect(10,10,50,50);

//绘制描边矩形
context.fillStyle = ‘#0000ff’;
context.fillRect(30,30,50,50);

}

6.绘制矩形

context.fillRect(x,y,width,height)  //填充矩形

context.strokeRect(x,y,width,height)//绘制矩形边框

context.clearRect(x,y,width,height)//擦除指定矩形区域中的图形,使得矩形区域中的颜色变成透明

7.使用路径

绘制除正方形、长方形外的图形

开始创建路径   context.beginPath();

创建图形的路径

路径创建完成后关闭路径  context.closePath();

设定绘制样式,调用绘制方法,绘制路径  context.fillStyle="rgba(255,0,0,1)"

context.strokeStyle="rgba(255,0,0,1)" context.fill() context.stroke()

例:

1.context.beginPath();

2.绘制圆形路径

context.arc(x,y,radius,startAngle,endAngle,anticlockwise)

x为起点的横坐标,y为绘制圆形的起点的纵坐标,radius为圆形半径,startAngle为开始角度,endAngle为结束角度,anticlockwise为是否按照顺时针方向绘制 true为顺时针 false 为逆时针

绘制直线

moveTo(x,y) 将光标移动到指定坐标点,绘制直线时以这个坐标点为起点

lineTo(x,y) 以moveTo中指定的点为起点,参数中指定的为终点绘制一条直线

绘制贝切尔曲线

context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)

绘制贝切尔曲线需要两个控制点 cp1x cp1y cp2x cp2y分别对应两个控制点的x和y坐标

X为贝切尔曲线的终点横坐标 y为贝切尔曲线的终点纵坐标

3.context.closePath();

4.context.fillStyle="rgba(255,0,0,1)"  context.fill()

canvas 绘图的更多相关文章

  1. Canvas绘图之平移translate、旋转rotate、缩放scale

    画布操作介绍 画布绘图的环境通过translate(),scale(),rotate(), setTransform()和transform()来改变,它们会对画布的变换矩阵产生影响. 函数 方法 描 ...

  2. HTML5 学习总结(四)——canvas绘图、WebGL、SVG

    一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 ...

  3. HTML5学习总结——canvas绘制象棋(canvas绘图)

    一.HTML5学习总结——canvas绘制象棋 1.第一次:canvas绘制象棋(笨方法)示例代码: <!DOCTYPE html> <html> <head> & ...

  4. 伙伴们休息啦canvas绘图夜空小屋

    HTML5 canvas绘图夜空小屋 伙伴们园友们,夜深了,休息啦,好人好梦... 查看效果:http://hovertree.com/texiao/html5/28/ 效果图如下: 代码如下: &l ...

  5. HTML5_03之Canvas绘图

    1.Canvas绘图--JS绘图: <canvas id='c1' width='' height=''></canvas> * Canvas尺寸不能用CSS设置: c1.he ...

  6. javascript的canvas绘图的基本用法

    <canvas>是HTML里面非常强大的元素,利用它结合js可以实现很多动画效果,大大增强交互性.下面,我想用图文并茂的方式阐述一下canvas的绘图机制的基础内容,话不多说,先上代码: ...

  7. canvas绘图、WebGL、SVG

    目录 一.Canvas 1.1.创建canvas元素 1.2.画线 1.3.绘制矩形 1.4.绘制圆弧 1.5.绘制图像 1.6.绘制文字 1.7.随机颜色与简单动画 二.WebGL 2.1.HTML ...

  8. HTML5 学习笔记(四)——canvas绘图、WebGL、SVG

    一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 ...

  9. Canvas绘图基础(一)

    简单图形绘制 矩形:描边与填充 Canvas的API提供了三个方法,分别用于矩形的清除.描边及填充 clearRect(double x, double y, double w, double h) ...

  10. Canvas绘图中的路径描边与填充

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...

随机推荐

  1. 布朗语料库中条件概率分布函数ConditionalFreqDist使用

    布朗语料库中使用条件概率分布函数ConditionalFreqDist,可以查看每个单词在各新闻语料中出现的次数.这在微博情感分析中非常有用,比如判断feature vector中代表positive ...

  2. 使用dd制作文件夹的img

    du -sh originfile //先看看需要制作的源文件夹大小,假如15M dd if=/dev/zero of=new_img.img bs=1024 count=20000 //生成20M的 ...

  3. Algorithm | Tree traversal

    There are three types of depth-first traversal: pre-order,in-order, and post-order. For a binary tre ...

  4. P1079 Vigenère 密码

    #include <bits/stdc++.h> using namespace std; const int maxn = 1005; int main() { freopen(&quo ...

  5. ecshop增加新字段及相应编辑器

    一.在数据库添加字段,会手写的就后台添加,不会就进入phpmyadmin默认的就行.      这是通用的写法:(这里是增加类似商品描述的字段,其他字段自行更改) ALTER TABLE `ecs_g ...

  6. Unit06 - 抽象类、接口和内部类(下) 、 面向对象汇总

    Unit06 - 抽象类.接口和内部类(下) . 面向对象汇总 1.多态:  1)意义:    1.1)同一类型的引用指向不同的对象时,有不同的实现        行为的多态:cut().run(). ...

  7. Java多线程 LockSupport

    在AQS里面进行阻塞线程,解除阻塞线程就用的LockSupport. JDK1.8源码: package java.util.concurrent.locks; import sun.misc.Uns ...

  8. Java并发控制:ReentrantLock Condition使用详解

    生产者-消费者(producer-consumer)问题,也称作有界缓冲区(bounded-buffer)问题,两个进程共享一个公共的固定大小的缓冲区.其中一个是生产者,用于将消息放入缓冲区:另外一个 ...

  9. des加密解密的两个方法

    <?php //$input - stuff to decrypt //$key - the secret key to use function do_mencrypt($input, $ke ...

  10. webservice的简单示例的实现步骤

    前段时间在webservice的问题上纠结了很长时间,本来想写在thinkphp的框架里面,可是怎么也实现不了,目前为止也仅仅是学会的没有框架的接口的开发. 在此资源共享一下步骤: 首先我创建的文件有 ...