Canvas HTML5

Canvas Examples

一个canvas是在html页面上规则的区域。

默认的,一个canvas没有边框和内容

<canvas id="myCanvas" width="200" height="100"></canvas>

基本步骤

<script>
var canvas = document.getElementById("myCanvas");//发现canvas元素
var ctx = canvas.getContext("2d");//创建一个drawing对象
//在画布上画画
ctx.fillStyle = "#FF0000";
ctx.fillRect(0,0,150,75);
</script>

HTML Canvas Coordinates

Canvas Coordinates

The HTML canvas 是一个二维空间的栅格

左上角的坐标是0,0

fillRect(0,0,150,75):从(0,0)开始画一个150x75 pixels 的矩形


Draw a Line

  • moveTo(x,y) - defines the starting point of the line
  • lineTo(x,y) - defines the ending point of the line

To actually draw the line, you must use one of the "ink" methods, like stroke().

Draw a Circle

  • beginPath() - begins a path
  • arc(x,y,r,startangle,endangle) - 创建一个圆弧/圆圈。起始角度0到 2*Math.PI。圆心(x,y)。半径:r。

Canvas - Gradients

j渐变可以用于填充形状线条等。

  • createLinearGradient(x,y,x1,y1) - 线型渐变
  • createRadialGradient(x,y,r,x1,y1,r1) - 放射状/圆形渐变

渐变对象需要设置两个亦或以上的颜色。使用addColorStop() 确定颜色的位置(0-1)和颜色。

将渐变赋值给属性fillstyle亦或strokeStyle,然后画出形状(规则几何,文本或线条)

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");

// Create gradient
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");

// Fill with gradient
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);

Drawing Text on the Canvas

  • font - 字体
  • fillText(text,x,y) - 实心字,从距离画布左边x和距离画布上面y距离处开始写字
  • strokeText(text,x,y) - 空心字
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.font = "30px Comic Sans MS";
ctx.fillStyle = "red";
ctx.textAlign = "center";
ctx.fillText("Hello World", canvas.width/2, canvas.height/2); 

Canvas - Images

  • drawImage(image,x,y)——不能再图片加载之前调用此方法

<!DOCTYPE html>
<html>
<body>

<p>Image to use:</p>

<img id="scream" width="220" height="277"
src="pic_the_scream.jpg" alt="The Scream">

<p>Canvas:</p>

<canvas id="myCanvas" width="240" height="297"
style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.
</canvas>

<script>
window.onload = function() {
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");
    var img = document.getElementById("scream");
   ctx.drawImage(img, 10, 10);
};
</script>

</body>
</html>

画一个动态时钟

<!DOCTYPE html>
<html>
<body>

<canvas id="canvas" width="400" height="400"
style="background-color:#333">
</canvas>

<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var radius = canvas.height / 2;//设置半径为画布高度一半
ctx.translate(radius, radius); //将画布起点从左上角设置到画布中心,因为设置的画布宽度和高度一样,所以(radius,radius)等于(200,200)
radius = radius * 0.90 //时钟最外面的圆的半径
setInterval(drawClock, 1000); //每隔一秒调用下面的函数

function drawClock() {
  drawFace(ctx, radius);  //绘制表面
  drawNumbers(ctx, radius); //绘制数字
  drawTime(ctx, radius);  //绘制指针
}

function drawFace(ctx, radius) {
  var grad;
  ctx.beginPath(); //开始画线条
  ctx.arc(0, 0, radius, 0, 2*Math.PI); //原型(0,0),半径radius,从0度到360度画一个圆圈
  ctx.fillStyle = ‘white‘; //背景颜色白色
  ctx.fill(); //填充
  grad = ctx.createRadialGradient(0,0,radius*0.95, 0,0,radius*1.05); //放射型渐变
  grad.addColorStop(0, ‘#333‘);
  grad.addColorStop(0.5, ‘white‘);
  grad.addColorStop(1, ‘#333‘);
  ctx.strokeStyle = grad;//线条样式
  ctx.lineWidth = radius*0.1;//线条宽度
  ctx.stroke();//填充线条
  ctx.beginPath();
  ctx.arc(0, 0, radius*0.1, 0, 2*Math.PI);//画表盘中间的圆点
  ctx.fillStyle = ‘#333‘;
  ctx.fill();
}

function drawNumbers(ctx, radius) {
  var ang;
  var num;
  ctx.font = radius*0.15 + "px arial";
  ctx.textBaseline="middle";
  ctx.textAlign="center";
  for(num = 1; num < 13; num++){ //1-12
    ang = num * Math.PI / 6; //以30度为一个划分
    ctx.rotate(ang);//顺时针旋转画布度
    ctx.translate(0, -radius*0.85);//在已经旋转的画布上设置中心为当前中心的垂直正上方
    ctx.rotate(-ang);//逆时针旋转画布,以上三步目的是设置文字书写的中心点
    ctx.fillText(num.toString(), 0, 0);
    ctx.rotate(ang);
    ctx.translate(0, radius*0.85);
    ctx.rotate(-ang);
  }
}

function drawTime(ctx, radius){
    var now = new Date();
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
    //hour
    hour=hour%12;
    hour=(hour*Math.PI/6)+
    (minute*Math.PI/(6*60))+
    (second*Math.PI/(360*60));
    drawHand(ctx, hour, radius*0.5, radius*0.07);
    //minute
    minute=(minute*Math.PI/30)+(second*Math.PI/(30*60));
    drawHand(ctx, minute, radius*0.8, radius*0.07);
    // second
    second=(second*Math.PI/30);
    drawHand(ctx, second, radius*0.9, radius*0.02);
}

function drawHand(ctx, pos, length, width) {
    ctx.beginPath();
    ctx.lineWidth = width;
    ctx.lineCap = "round";
    ctx.moveTo(0,0);
    ctx.rotate(pos);
    ctx.lineTo(0, -length);
    ctx.stroke();
    ctx.rotate(-pos);
}
</script>

</body>
</html>

时间: 2024-10-20 23:31:55

Canvas HTML5的相关文章

HTML5 新元素、HTML5 Canvas

HTML5 新元素 自1999年以后HTML 4.01 已经改变了很多,今天,在HTML 4.01中的几个已经被废弃,这些元素在HTML5中已经被删除或重新定义. 为了更好地处理今天的互联网应用,HTML5添加了很多新元素及功能,比如: 图形的绘制,多媒体内容,更好的页面结构,更好的形式 处理,和几个api拖放元素,定位,包括网页 应用程序缓存,存储,网络工作者,等. <canvas> 新元素 标签 描述 <canvas> 标签定义图形,比如图表和其他图像.该标签基于 JavaSc

HTML5: HTML5 Canvas

ylbtech-HTML5: HTML5 Canvas 1.返回顶部 1. HTML5 Canvas <canvas> 标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形. 在画布上(Canvas)画一个红色矩形,渐变矩形,彩色矩形,和一些彩色的文字. 什么是 canvas? HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形. 你可以通过多种方法使用

HTML5css3学习总结(4)canvas绘图

canvas HTML5 重中之重 canvas是HTML5中的重点:今天简单的学习了一下,总结一下canvas的概念:canvas是要有面向对象的思维:各个标签就像我们画水彩画一样,需要注意标签使用的顺序canvas就是一个画布:可以画线,图形,填充等.操作图片和文本.操作方式是使用js:可以提供2d图形,3d图形绘制: canvas使用:①<canvas id='myCanvas' width='500' height='500'></canvas>需要有一个ID ,画布的尺寸

H5 Canvas

HTML 5 Canvas HTML5 拖放 HTML5 SVG canvas 元素用于在网页上绘制图形. 什么是 Canvas? HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. 画布是一个矩形区域,您可以控制其每一像素. canvas 拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. 创建 Canvas 元素 向 HTML5 页面添加 canvas 元素. 规定元素的 id.宽度和高度: <canvas id="myCanvas" wid

HTML5 教程

HTML5 简介 HTMLHTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定.HTML5的设计目的是为了在移动设备上支持多媒体.HTML5 简单易学. 什么是 HTML5? HTML5 是下一代 HTML 标准.HTML , HTML 4.01的上一个版本诞生于 1999 年.自从那以后,Web 世界已经经历了巨变.HTML5 仍处于完善之中.然而,大部分现代浏览器已经具备了某些 HTML5 支持.HTML5 是如何起步的?HTML5 是 W3C 与 WHAT

利用canvas绘制图形

绘制图有很多种方法,可以借助flash实现,也可以使用SVG和VML来绘图.本章将要学习一种新的绘图方法--使用Canvas元素,它是基于HTML5原生的绘图功能.使用Canvas元素,可以绘制图形,也可以实现动画.它方便了使用Javascript脚本的前端开发人员,寥寥的竖行代码,就可以在Canvas元素中实现各种图形及动画.本章将介绍如何使用Canvas元素来绘制一些简单的图形.本章主要知识点如下:·认识Canvas元素·使用Canvas绘图·Canvas与JavaScript之间的互动·利

HTML5和CSS3新特性一览

HTML5 1.HTML5 新元素 HTML5提供了新的元素来创建更好的页面结构: 标签 描述 <article> 定义页面独立的内容区域. <aside> 定义页面的侧边栏内容. <bdi> 允许您设置一段文本,使其脱离其父元素的文本方向设置. <command> 定义命令按钮,比如单选按钮.复选框或按钮 <details> 用于描述文档或文档某个部分的细节 <dialog> 定义对话框,比如提示框 <summary>

HTML5总览

HTML5 HTML5 教程 HTML5 浏览器支持 HTML5 新元素 HTML5 Canvas HTML5 内联 SVG HTML5 拖放 HTML5 地理定位 HTML5 Video(视频) HTML5 Audio(音频) HTML5 Input 类型 HTML5 表单元素 HTML5 表单属性 HTML5 语义元素 HTML5 Web 存储 HTML5 应用程序缓存 HTML5 Web Workers HTML5 SSE HTML5 测验

html5面试的时候看一眼

h5的布局标签: 比如 article.footer.header.nav.section aside 表单控件:calendar.date.time.email.url.search 表单结构更自由 XHTML中需要放在form之中的诸如inpu/button/s人员配置:elect/textarea等标签元素,在HTML5中完全可以放在页面任何位置,然后通过新增的form属性指向元素所属表单的ID值,即可关联起来. <form id="myform"></form