Canvas之画七巧板

FromCanvas教程 Canvas绘图是基于状态的,看完后,略有了解Canvas!

七巧板代码如下:

<!DOCTYPE html>
<html>

<head lang="en">
	<meta charset="UTF-8">
	<title></title>
</head>

<body>
	<canvas id="canvas" style="border:1px solid #aaa; display: block;margin: 50px auto;">
		当前浏览器不支持Canvas, 请您更换浏览器后再试.
	</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}], 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 canvas = document.getElementById("canvas");

			canvas.width = 800; //根据W3C标准,建议用这样的方式设置canvas的属性;因为这里包括了一些像素相关的定义.
			canvas.height = 800;

			var context = canvas.getContext("2d");

			/*
			context.moveTo(100, 100); //拿起画笔;
			context.lineTo(700, 700); //划到另一个点,还可以多加一个点;这是我们的构思;

			context.stroke(); //胸有成竹了,就该stroke一起合成画好它了!
			*/

			for ( var i = 0; i < tangram.length; i++ )
				draw( tangram[i], context)
		}

		function draw( piece, cxt ) {

			cxt.beginPath();  //由于canvas是基于状态的,当有fill()和stroke()等同时存在的时候,他们的状态是相同的.
			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(); //begin和close很重要;

			cxt.fillStyle = piece.color;
			cxt.fill();

			cxt.strokeStyle = "black"
			cxt.lineWidth = 3;
			cxt.stroke();
		}
	</script>	

</body>

</html>

七巧板效果如下:

时间: 2024-10-14 21:30:18

Canvas之画七巧板的相关文章

chart js canvas-使用chart.js在canvas上面画线形图bug

问题描述 使用chart.js在canvas上面画线形图bug 我使用chart.js画线形图,有几个筛选条件,第一次绘制没有问题,当第二绘制时显示的是正确的线形图,可是当鼠标在线形图上滑动的时候会出现第一次的线形图跟第二次的线形图闪烁,来回切换的情况. 我感觉是canvas这个标签有自己的缓存还是什么的,但是用网上的办法不管用 解决方案 兄弟,我刚遇到这个,仔细看chart.js的代码,找到解决办法了, myLineChart.destroy(); myLineChart =myNewChar

html5中怎么在canvas中画一个二叉树?

问题描述 html5中怎么在canvas中画一个二叉树? 是否用到递归??????? 具体怎么实现??????? 谢谢 解决方案 用递归就可以画出来 解决方案二: HTML5 canvas画的摇摆的树HTML5开发Canvas递归画树HTML5之Canvas画正方形

使用JavaScript在Canvas上画出一片星空

随着Html5的迅猛发展,画布也变得越来越重要.下面我就写一个关于在canvas上画出一片星空的简单的代码的示例. 理论基础 初始化一个canvas,获得一个用于绘制图形的上下文环境context.并指定为2d方式进行绘图. 画一个五角星其实就是找点和连线的过程.根据几何知识,可以使用两个同心圆来方便的求得相应的坐标位置. 设置状态,完成五角星的绘制过程.最后应用于整片星空,绘制很多的五角星. 封装好的五角星绘制函数 下面这个绘制的五角星的方法是可以被复用的,注释也写的比较的清楚. /** *

javascript基于HTML5 canvas制作画箭头组件_javascript技巧

样例: 废话少说,直接上代码: arrow.js /** * 实现两点间画箭头的功能 * @author mapleque@163.com * @version 1.0 * @date 2013.05.23 */ ;(function(window,document){ if (window.mapleque==undefined) window.mapleque={}; if (window.mapleque.arrow!=undefined) return; /** * 组件对外接口 */

HTML5 canvas画带箭头的虚线

 本案例注意事项: 1.当你拖动箭头时 canvas里面线条绘制自动重新计算点. 2.canvas没有画虚线的api,因为对api不是很熟悉,所以就不献丑了,在网上找的. 3.箭头出来后 点击画布里面的任意点 箭头将延伸到该处,至于具体的应用 修改canvas的lineTo属性就能实现了. 4.具体的代码解释我写的比较清楚,修改箭头样式只需写过lineTo即可,非常简单. 效果如下: 代码如下: <!--程序说明: 作者:xue51 描述:该程序主要是通过exchange的支持在IE下面实现ca

延时-怎么实现canvas画出来的圈圈显示时间小于1毫秒

问题描述 怎么实现canvas画出来的圈圈显示时间小于1毫秒 我想让canvas中画出小圈圈并移动,显示时间要小于1毫秒或足够短.这样挥动手机时不会有"影子".还想问android里怎么实现延时小于1ms..

Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)

1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect, Path,

JavaScript学习小结之使用canvas画“哆啦A梦”时钟_javascript技巧

前言:今天看完了Js书的canvas画布那张,好开心~又是心爱的canvas~欧耶~ 之前看到有人建议我画蓝胖子,对哦,我怎么把童年最喜欢的蓝胖子忘了,为了表达我对蓝胖子的歉意,所以今天画了会动的hello world,也算是一种进步咯~ 好的各位,请上车的乘客往里走,请不要堵塞通道,谢谢.我们开车吧~ 正文: 今天先上图吧,看看效果再说 今天的蓝胖子长这样,看到它还是这么胖,我就放心了.这世界还是充满正能量的,总归还有人比我胖,哈哈哈 然后是上代码 html部分 <canvas id="

canvas做loading动画

由于公司最近项目不是很忙,所以,自己利用闲暇的时间来研究了一阵子的htm5和css3,正巧,公司最近要对以前的项目进行一次统一的升级,而我被告知时,主要是在以前的版本中加入一些页面动画.有4人参与了动画特效的编写,我很幸运自己也被选中. 第一次做动效还是用css3,心里好激动.虽然自己对css3不是很了解,但是,我还是有信心自己能够胜任这次的任务.接下来近2个月的时间里,我 都在做css3动效,由于自己只是擅长javascript和JQuery,对css了解也不是很熟悉,所以,做css3动画上还