热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

html5中canvas的学习使用

canvas:<canvas>标签只是图形容器,你必须使用脚本来绘制图形,有一个机遇javascript的绘图API。要从同一图形的一个<canvas>标记中移除元素,往往需要

canvas:标签只是图形容器,你必须使用脚本来绘制图形,有一个机遇Javascript的绘图API。要从同一图形的一个标记中移除元素,往往需要擦掉绘图重新绘制它。

  大多数canvas绘图API都是定义在通过画布的getContext()方法获取的一个"绘图环境"对象上。

"canvas" 400" 300">
您的浏览器不支持Canvas

View Code

   每个canvas都有一个对应的context对象,canvas API定义在这个context对象上面。使用getContext方法获取该对象。参数2d表示绘制2d平面图形。

  1.context.beginPath方法表示开始绘制路径,MoveTo(x,y)设置线段的起点,lineTo(x,y)设置线段的终点。strokeStyle属性设置线段颜色,stroke方法用来给线段着色。

//绘制线段,有closePath()整个变成一个封闭的图形。
context.beginPath();context.moveTo(
10,200);
context.lineTo(
100,250);
context.lineTo(
100,500);
context.closePath();
context.strokeStyle
="#ffcc00";
context.stroke();

 

  2.fillRect(x,y, width,height)方法用来绘制矩形,四个参数为矩形左上角的顶点及矩形宽高。fillStyle属性用来填充矩形颜色。

   strokeRect方法与fillRect方法类似,用来绘制空心矩形。

   clearRect方法用来清除某个矩形区域内容。你可以在已画好的矩形部分截取掉某部分。

//绘制矩形
context.fillcolor: #800000;">"eeeeff";context.fillRect(0,0,400,300);
//绘制空心矩形
context.strokeRect(0,0,400,300);
//清除矩阵区域
context.clearRect(0,0,200,100);

   3.绘制圆形和扇形。

    arc(x,y,radius,startAngle,endAngle,anticlockwise):radius表示半径,startAngle与endAngle则是扇形的起始角度和终止角度(用弧度表示),anticlockwise表示做图时应该逆时针画(true)还是顺时针画(false)。

//绘制实心的圆。
context.beginPath();context.fillStyle
="#ff0000";
context.arc(
100,100,30,5,Math.PI*1,true);
context.fill();
//绘制空心圆
 context.beginPath();
context.arc(60,60,10,0,Math.PI*1,true);
context.stroke;
context.stroke();

 

   4. createLinearGradient 设置渐变色

     createLinearGradient(x1,y1,x2,y2):其中x1和y1是起点坐标,x2和y2是终点坐标。通过不同的坐标值,可以生成从上至下,从左到右的渐变等等。

//设置一矩形水平渐变色
var grd==context.createLinearGradient(0,50,100,50);
grd.addColorStop(
0,"#ff0");
grd.addColorStop(
1,"#f00");
context.fillStyle=grd;
context.fillRect(10,10,200,300);

 

   5.设置阴影

    ctx.shadowOffsetX设置水平位移,ctx.shadowOffsetY设置垂直位移,ctx.shadowBlur设置模糊度,ctx.shadowColor设置阴影颜色。

//设置一矩形阴影。
context.shadowOffsetX=10;context.shadowOffsetY=10;
context.shadowBlur
=5;
context.shadowColor
="rgba(0,0,0,0.5)";

context.fillStyle
="red";
context.fillRect(
20,20,200,200);

 

   6.绘制文本

    fillText(string,x,y)用来绘制文本,它的三个参数分别为文本内容,起点的X,Y坐标,使用前需要先用font设置字体,大小,样式。

    strokeText()方法用来添加空心文字。

//设置字体。
context.fOnt="Bold 10px Arial";context.textAligh="left";
context.fillStyle
="red";
context.fillText(
"Hell0!",10,50);
//绘制空心字体
context.strokeText("Hello!",10,100);

   7.载入图像:drawImage

    canvas允许将图像文件插入画布,做法是读取图片后,使用drawImage方法在画布内进行重绘。由于图像的载入需要时间,drawImage方法需要在图片完全载入后才能调用。

    drawImage方法接受三个参数,第一个参数是图像文件的DOM元素,即img标签,第二个第三个是图像左上角在canvas中的坐标。

//载入图像
var
img=new Image();img.onload=function(){
if(img.width!=canvas.width)
img.width
=canvas.width;
if(img.height!=canvas.height)
img.height
=canvas.height;
context.clearRect(
0,0,canvas.width,canvas.height);//将画布清空。
context.drawImage(img,0,0);
}
img.src
="demo.jpg";

   8.读取canvas内容,getImageData(), putImageData()

    getImageData方法可以用来读取Canvas的内容,返回一个对象,包含了每个像素的信息。

    返回的对象包含一个data属性,它的值是一个一维数组。该数组的值,依次是每个像素的红、绿、蓝、alpha通道值。该数组可读可写。

    修改这个数组后,使用putImageData方法将数组内容重新绘制在Canvas上。

var imgData=context.getImageData(0,0,context.width,context.height);
var d=imgData.data;
for (var i =0; i4)
{
var r=d[i];
var g=d[i+1];
var b=d[i+2];
d[i]
=d[i+1]=d[i+2]=(r+g+b)/3;
}
context.putImageData(imgData,
0,0);

 


推荐阅读
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • FileReader详解与实例---读取并显示图像文件
    我们曾经在《HTML5中File对象初探》中,使用到了FileReader,在那篇文章中,它被用来将一个文件读取为二进制字符串,并通过xhr发送到后端形成交互。作为FileAPI的一部 ... [详细]
  • 不BB,直接正题一.将大众要领绑定到Page上单个绑定constoldPagePagePagefunction(app){注重大众函数的名字不要反复,不然掩盖app.utilfun ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 活动主题:五一巨献,问答有礼,105QB送给IT互联网界的劳动人民活动时间:4月30日晚上10点~5月2日晚上10点网址:http:ask.jiutianniao.com ... [详细]
  • <!DOCTYPEhtml><htmllang"en"><head><metacharset"UTF-8&qu ... [详细]
author-avatar
徐韵茜YUNXI
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有