[学习笔记]HTML5之canvas

虐了一下午的canvas

先撸了一个七巧板

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
<canvas id="canvas"  style="border:1px solid #ccc; display:block; margin:50px auto;">
</canvas>

<script>
    var tangram=[
        {p:[{x:0,y:0},{x:800,y:0},{x:400,y:400}],color:‘#caff67‘},
        {p:[{x:0,y:0},{x:400,y:400},{x:0,y:800},{x:0,y:0}],color:‘#67becf‘},
        {p:[{x:800,y:0},{x:800,y:400},{x:600,y:600},{x:600,y:200}],color:‘#ef3d61‘},
        {p:[{x:600,y:200},{x:600,y:600},{x:400,y:400}],color:‘#f9f51a‘},
        {p:[{x:400,y:400},{x:600,y:600},{x:400,y:800},{x:200,y:600}],color:‘#a594c0‘},
        {p:[{x:200,y:600},{x:400,y:800},{x:0,y:800}],color:‘#fa8ecc‘},
        {p:[{x:800,y:400},{x:800,y:800},{x:400,y:800}],color:‘#f6ca29‘},
    ]
window.onload=function() {
    var canavs=document.getElementById(‘canvas‘);

    canvas.width=800;
    canvas.height=800;

    var context=canvas.getContext(‘2d‘);
    for(var i=0;i<tangram.length;i++)
    draw(tangram[i],context)

}
    function draw(piece,cxt){

        cxt.beginPath();
        cxt.moveTo(piece.p[0].x,piece.p[0].y);
        for(var i=1;i<piece.p.length;i++)
            cxt.lineTo(piece.p[i].x,piece.p[i].y);
        cxt.closePath();

        cxt.fillStyle=piece.color;
        cxt.fill();
    }
</script>

</body>
</html>

知道了canvas绘图其实是在canvas.getContext(‘2d‘)环境里进行的,要先声明之。

绘图分两个步骤,首先描绘路径轨迹,然后渲染填充。

在页面中存在绘制多个图形的情况下,避免各个路径之间互相干扰,要把每段完整的路径用beginPath()和closePath()包围起来保证代码的完整性。

值得一提的是在路径末端加了closePath()后,绘制的路径会自动收尾封闭,即如果绘制了三角形的两条边,那么closePath()会自动补全第三条边使图形成为封闭的三角形。

其中绘制圆形路径用arc(x,y,r,0,2*Math.PI,true),其中xy为圆心坐标,r为半径,0为起点,2*Math.PI为终点,true为逆时针方向绘制该圆

圆形解剖:

将路径变成线条使用stroke(),用lineWidth属性设置线条的粗细,用strokeStyle设置颜色;

填充路径用fill(),用fillStyle设置填充色。

吃饭,未完待续。。。

时间: 2024-08-05 04:44:01

[学习笔记]HTML5之canvas的相关文章

4月9日学习笔记——HTML5

新增功能 1. HTML5新标准中直接添加了拥有具体含义的HTML标签比如:<article>.<footer>.<header>.<nav>.<section>.<video>, <progress>(进度条).<meter>(容量占用条).<time>(不显示效果), <aside>(文章侧栏), <canvas> 同时取消了一些标签,如<acronym>,

HTML5学习笔记----html5与传统html区别

一. HTML5语法的改变 该知识点所说变化指的是基于HTML4基础上所定义的改变,主要有如下: HTML5的文件扩展符(.html或.htm)与内容类型(text/html)保持不变. HTML5中,刻意不使用版本声明,一份文档将会适用于所有版本的HTML. 从HTML5开始,对于文件的字符编码推荐使用UTF-8. HTML5确保了与之前HTML版本的最大程度的兼容性. 为了保证兼容性,需从元素说起,在HTML5.中,元素的标记可以省略.其体来说,元素的标记分为“不允许写结束标记”.“可以省略

[html5] 学习笔记-html5增强的页面元素

在 HTML5 中,不仅增加了很多表单中的元素,同时也增加和改良了可以应用在整个页面中的元素.重点包含 figure.figcaption.details.summary.mark.progress.meter.ol.dl.cite .small元素. 1.figure,figcaption元素 figure元素用来表示网页上一块独立的内容,可以是图片.统计图.代码实例. figcaption元素从属figure元素,表示figure元素的标题:一个figure元素只能放置一个figcaptio

html5学习笔记(html5语义化)

Html5语义化:让机器可以读懂的内容,机器能读懂的就是标准了,就是新的这些个HTML5的标签了. 以前写html代码的时候呢 大多是DIV+CSS,这种div你可以拿他当头部当尾部当任何你需要表达含义的地方,正因为如此才让机器无法知道你这到底表达啥意思,于是语义化就有用了,给你一套标准,按这些规定的写,机器就能知道你表达的意思了. (语义网部分来源于:http://www.runoob.com/web/web-semantic.html) 而让机器读懂所需要的东西就是语义网.语义网技术,它包括

html5 canvas 学习笔记(一)

一.canvas元素API canvas元素并未提供很多API,实际上他只提供了两个属性与三个方法: 1.canvas元素属性 width 属性:与 height 属性: canvas元素绘图表面的宽度,在默认状况下,浏览器会将canvas元素大小设定成与绘图表面大小一致,然而如果在css中覆写了元素大小,那么浏览器则会将绘图表面进行缩放,使之符合元素尺寸.其值为非负整数,默认值为300. 2.canvas元素方法 getContext()方法: 返回与该canvas元素相关的绘图环境对象,每个

HTML5 Canvas知识点学习笔记

canvas ① 主要作用:绘制矢量图 ② 矢量图图形(路径)-(ILL) 位图图像(像素点)- PS中图像都是位图 ③ Canvas 能够制作动画,但是不是为了制作动画而生的也能够制作游戏.主要为了绘图而生. ④ 能够设置宽高 推荐样式写在style:Canvas 相当于是一个绘制图形的容器,并没有绘制功能,需要借助JS(脚本)实现绘制功能. 思路: getContext( ) var context = cnvas.getContext('2d'); // 图像的绘制 // 开始      

[html5] 学习笔记-Canvas标签的使用

Canvas通过JavaScript来绘制2D图形.Canvas是逐像素渲染的.在Canvas中,一旦图形被绘制完成,它就不会继续得到浏览器的关注.如果其位置发生变化,那么整个场景也需要重新绘制,包括任何已被图形覆盖的对象. 1.Canvas标签 html5中<canvas>元素用于图形的绘制,通过脚本(通常是JavaScript)来完成 <canvas>标签只是图形容器 可以通过多种方法使用Canvas绘制路径.盒.圆.字符以及添加图像 1.1 直接在html5中创建,这种方式采

Canvas 练习及学习笔记 (二)

2016-11-06 Canvas练习及学习笔记第二篇 首先,以下还是我学习了Canvas基础后的一些小练习,源代码大家可以访问我的Github: https://github.com/fanyear 时钟 https://fanyear.github.io/Canvas/Clock/index.html (放大镜)鼠标左键   https://fanyear.github.io/Canvas/Magnifier/index.html 缩放图像  https://fanyear.github.i

Canvas 学习笔记1

#Canvas 学习笔记1 @[Canvas,Nunn,HTML5,javascript] ##前言 相信大家多多少少都有了解过`Canvas`,这里我就不多做解释了,网上也充斥了这方面的知识,很多人看了之后,其实发现作用非常小,因为似乎这些东西什么也做不了,本着学习提升自己,造福大家,我打算把我学习`Canvas`的历程记录在这里. 首先推荐大家先看看阮一峰大大写的这个[Canvas API](http://javascript.ruanyifeng.com/htmlapi/canvas.ht