这个元素负责在页面中设定一个区域,然后就可以通过JS动态的在这个区域中绘制图形。

<canvas>由几组API构成。

<canvas>还建议一个名为WebGL的3D上下文

(1)基本用法

<canvas id="drawing" width="200" height="200">a drawing of something</canvas>

var drawing = document.getElementById("drawing");

if(drawing.getContext){

  var context = drawing.getContext("2d");//为html规范之外的元素创建默认的html元素

}

(2)2D上下文

填充和描边

var drawing = document.getElementById("drawing");

if(drawing.getContext){

  var context = drawing.getContext("2d");//为html规范之外的元素创建默认的html元素

  context.strokeStyle = "red";

  context.fillStyle = "#0000ff";

}

绘制矩形

context.fillStyle = "#ff0000";

context.fillRect(10,10,50,50);

context.strokeStyle = "rgba(0,0,255,0.5)";//描边

context.strokeRect(30,30,50,50);

绘制路径

通过路径可以创造出复杂的形状和线条。

//开始路径

context.beginPath();

//绘制外圆

context.arc(100,100,99,0,2*Math.PI,false);

//绘制内圆

context.moveTo(194,100);

context.arc(100,100,94,0,2*Math.PI,false);

//绘制分针

context.moveTo(100,100);

context.lineTo(100,15);

//绘制时针

context.moveTo(100,100);

context.lineTo(35,100);

//描边路径

context.stroke();

绘制文本

context.font = "bold 14px Arial";

context.textAlign = "center";

context.textBaseline = "middle";

context.fillText("12",100,20);

变换

//开始路径

context.beginPath();

//绘制外圆

context.arc(100,100,99,0,2*Math.PI,false);

//绘制内圆

context.moveTo(194,100);

context.arc(100,100,94,0,2*Math.PI,false);

//变换原点

context.translate(100,100);

//绘制分针

context.moveTo(0,0);

context.lineTo(0,-85);

//绘制时针

context.moveTo(0,0);

context.lineTo(-65,0);

//描边路径

context.stroke();

====

context.rotate(1);

save();保存

restore();返回

绘制图像

var image = document.images[0];

context.drawImage(image,10,10);

context.drawImage(image,50,10,20,30);

context.drawImage(image,0,10,50,50,0,100,40,60);

//取得图像的数据URI

var imgURI = drawing.toDataURL("image/png");

//显示图像

var image = document.createElement("img");

image.src = imgURI;

document.body.appendChild(image);

阴影

阴影需要统一设置,在绘制前设置

//设置阴影

context.shadowOffsetX = 5;

context.shadowOffsetY = 5;

context.shadowBlur =4;

context.shadowColor = "rgba(0,0,0,0.5)";

渐变

var gradient = context.createLinearGradient(30,30,70,70);

gradient.addColorStop(0,"white");
gradient.addColorStop(1,"black");
 
context.fillStyle = gradient;
context.fillRect(30,30,50,50);
径向渐变
var gradient = context.createRadialGradient(55,55,10,55,55,30);
gradient.addColorStop(0,"white");
gradient.addColorStop(1,"black");

模式

是重复的图像。

var image = document.images[0];

pattern = context.createPattern(image,"repeat");

context.fillStyle = pattern;

context.fillRect(10,10,150,150);

使用图像数据

var image = document.images[0];

//绘制原始图像

context.drawImage(image,0,0);

//取得图像数据

imageData = context.getImageData(0,0,image.width,image.height);

data =imageData.data;

//回写图像数据并显示结果

imageData.data = data;

context.putImageData(imageData,0,0);

合成

//修改全局透明度

context.globalAlpha = 0.5;

//重置全局透明度

context.globalAlpha = 0;

WebGL是针对3D上下文。由于显卡,系统等原因,好多不支持。

canvas画图的更多相关文章

  1. html5之canvas画图基础

    HTML5+CSS3的好处是,你可以编写一个页面分别用于不同的平台,只需要设置不同的css样式就可以了,现在基本主流浏览器都支持全新的HTML5和CSS3,因为它的跨平台开发.因为是原生代码所以它的页 ...

  2. Canvas画图在360浏览器中跑偏的问题

    问题描述,canvas画图的js代码中编写的是画正方形的代码,结果在360浏览器上变成了长方形,不知道怎么回事,请问各位大神是否遇到过此类问题? <!DOCTYPE html> <h ...

  3. h5 canvas 画图

    h5 canvas 画图 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  4. html5 Canvas画图3:1px线条模糊问题

    点击查看原文地址: html5 Canvas画图3:1px线条模糊问题 本文属于<html5 Canvas画图系列教程> 接上一篇canvas画线条教程 上次我们讲到,canvas有时候会 ...

  5. 使用 canvas 画图时图像文字模糊的解决办法

    最近在使用 canvas 画图的时候,遇到了图像文字模糊的问题,解决思路就是根据分辨率创建不同尺寸的画布.以下是创建高分辨率画布的代码: /** * 创建高分辨率画布 * @param w 画布宽 * ...

  6. html5 canvas 画图移动端出现锯齿毛边的解决方法

    使用HTML5的canvas元素画出来的.在移动端手机上测试都发现画图有一点锯齿问题 出现这个问题的原因应该是手机的宽是720像素的, 而这个canvas是按照小于720像素画出来的, 所以在720像 ...

  7. HTML5 canvas画图

    HTML5 canvas画图 HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript).不过,<canvas> 元素本身并没有绘制能力(它仅仅是 ...

  8. HTML5 Canvas画图与动画学习59例

    HTML5 Canvas画图与动画学习59例 学习HTML5 动画,画图的好资料. HTML5 Canvas画图与动画学习59例

  9. html Canvas 画图 能够选择并能移动

    canvas 画图,能够选中所画的图片并且能够随意移动图片 <html xmlns="http://www.w3.org/1999/xhtml"> <head r ...

  10. 毕业设计总结(1)-canvas画图

    去年6月底完成的毕业设计,到现在也才开始给它做个总结,里面有很多可以学习和借鉴的东西. 我的毕业设计的题目是“一种路径规划算法的改进与设计”,具体的要求可参见下面的表格: 题目 一种路径规划算法的改进 ...

随机推荐

  1. 类中的两大类(string类、math类)的应用

    类是我们在学习C#的过程中很关键也是特别容易让人蒙逼得地方,类的应用直接可以调用它的属性和方法来进行判断和验证 string类(也叫字符串类) C#中的String类很有用,下面是一些它的常用方法的总 ...

  2. Nginx+IIS+Redis 处理Session共享问题 1

    最近遇到一个棘手的问题,微信公众平台的前端站点session老是丢失,我们是走的微信网页授权,授权后获取用户openid,丢失后没有openid后续的操作全白搭了,因为没了openid只能判断为客户不 ...

  3. Servlet中表单的重复提交

    1.用户登录页面: ->设置一个UUID到session中 ->将UUID添加到隐藏域中,提交到服务器 <% //进入页面,设置一个UUID,将UUID添加到session中 Str ...

  4. Compare Version Numbers leetcode

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...

  5. 每天一个Linux命令 4

    Linux系统关机命令 shutdown -h 时间 init 0 poweroff Linux系统注销命令 logout 或者是快捷键 Ctrl+d Linux系统重启命令 reboot Linux ...

  6. wemall app商城源码中基于PHP的ThinkPHP惯例配置文件代码

    wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...

  7. 九度oj题目1207:质因数的个数

    题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1&l ...

  8. 使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混乱

    1.当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的某一个进行装配,在这种情况下,你可以使用 @Qualifier 注释和 @Autowired 注释来精确配置. 2.示例 ...

  9. 高并发解决方案之Actor——第一节

    还在为状态的并发控制而痛苦吗?   还在因为数据库瓶颈而痛苦吗?   还在因为缓存的实时性控制而痛苦吗?   还在为了想分布式,但又不知道怎么下手而痛苦吗?   Actor欢迎你!!!   一.什么是 ...

  10. Chapter 3. Programming with RDDs

     Programming with RDDs This chapter introduces Spark's core abstraction for working with data, the r ...