来源:自学PHP网 时间:2015-01-26 11:14 作者: 阅读:次
[导读] HTML5新增了一个元素canvas,用于绘图使用,其实它的表现和div比较接近(其实他应该属于inline-block),而提供了许多接口,从而轻易的绘制矩形框、园三角形等...
HTML5新增了一个元素canvas,用于绘图使用,其实它的表现和div比较接近(其实他应该属于inline-block),而提供了许多接口,从而轻易的绘制矩形框、园三角形等
HTML5新增了一个元素canvas,用于绘图使用,其实它的表现和div比较接近(其实他应该属于inline-block),而提供了许多接口,从而轻易的绘制矩形框、园三角形等 PS:关于HTML5新增元素经过最近两天的学习,和以前对HTML5的认知,我认为HTML5其实还是HTML4,两者之间没多大的区别,无非是增加了点新东西。 直入正题,我们来绘制一个矩形框看看,这里提供一个颜色选择器用于方便的选择颜色,PS:现在不用jquery编程感觉真麻烦。。。 问题:定义样式与定义height与width 一来就遇到了问题,我这里先来截个图: 复制代码 代码如下:<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> function draw() { //获取canvas对象 var canvas = document.getElementById('canvas'); if (canvas == null) { return false; } var context = canvas.getContext('2d'); context.fillStyle = '#99d9ea'; context.fillRect(0, 0, 300, 200); //填充画布结束 context.strokeStyle = 'red'; context.fillStyle = 'gray'; context.lineWidth = 1; context.fillRect(10, 10, 100, 100); context.strokeRect(10, 10, 100, 100); context.clearRect(20, 20, 20, 20); } </script> </head> <body> <canvas id="canvas" width=300 height="200" style="border: 1px solid black; width: 300px; height: 200px;"> </canvas> <button onclick="draw();"> 绘制矩形</button> <input type="color" /> </body> </html> 各位情况canvas元素,图一位设置width与height的情况,图二十用style指定的情况: 可以看到,对于canvas来说,还是老老实实定义高宽的好,别去傻乎乎的用样式了,当然这个问题需要实际研究才能得出最终结论。 好了,现在我们再来看看绘制矩形这个方法: PS:其实,使用该方法这么麻烦,完全可以将该函数封装下下,使用便会简单许多 1、使用getElementById方法获取绘制对象2、取得上下文getContext('2d'),这都是固定的写法3、指定填充的颜色fillStyle和绘制的颜色strokeStyle,即里面的颜色和边框的颜色4、指定线宽linewidth5、填充/绘制 fillRect/strokeRect 参数为 x,y,width,height6、若是要使其中一块透明,使用clearRect 至此,绘制矩形框便暂时告一段落。 绘制圆形 现在我们来绘制圆形,这个说起绘制圆形,其实我原来用js好像写过一个,这里也贴出来看看: 复制代码 代码如下:我是纯js画的圆 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <style type="text/css"> div { position: absolute; width: 1px; height: 1px; line-height: 1px; } </style> <script src="http://www.cnblogs.com/jquery-1.7.1.js" type="text/javascript"></script> <script type="text/javascript"> //x2 + y2 = r2; $(document).ready(function () { //先画x,y var box = $('#box'); var NUM = 200; var R = NUM / 2; var RR = R * R; for (var i = 0; i <= NUM; i = i + 6) { //var divX = $('<div style="left:' + i + 'px;top:' + R + 'px;">*</div>') // var divY = $('<div style="top:' + i + 'px;left:' + R + 'px;">*</div>') var ti = i; //sqrt(x) if (ti > R) { ti = ti - R; var ty = Math.sqrt((RR - ti * ti)); var y = $('<div style="left:' + (R - ty) + 'px;top:' + i + 'px;">*</div>') var y1 = $('<div style="left:' + (R + ty) + 'px;top:' + i + 'px;">*</div>') box.append(y); box.append(y1); } else if (ti < R) { ti = R - ti; var ty = Math.sqrt((RR - ti * ti)); var y = $('<div style="left:' + (R - ty) + 'px;top:' + i + 'px;">*</div>') var y1 = $('<div style="left:' + (R + ty) + 'px;top:' + i + 'px;">*</div>') box.append(y); box.append(y1); } //box.append(divX); //box.append(divY); } for (var i = 0; i <= NUM; i = i + 6) { //var divX = $('<div style="left:' + i + 'px;top:' + R + 'px;">*</div>') // var divY = $('<div style="top:' + i + 'px;left:' + R + 'px;">*</div>') var ti = i; //sqrt(x) if (ti > R) { ti = ti - R; var ty = Math.sqrt((RR - ti * ti)); var y = $('<div style="top:' + (R - ty) + 'px;left:' + i + 'px;">*</div>') var y1 = $('<div style="top:' + (R + ty) + 'px;left:' + i + 'px;">*</div>') box.append(y); box.append(y1); } else if (ti < R) { ti = R - ti; var ty = Math.sqrt((RR - ti * ti)); var y = $('<div style="top:' + (R - ty) + 'px;left:' + i + 'px;">*</div>') var y1 = $('<div style="top:' + (R + ty) + 'px;left:' + i + 'px;">*</div>') box.append(y); box.append(y1); } } }); </script> </head> <body> <div id="box" style="width: 504px; height: 504px; position: relative; top: 20px; left: 300px; border: 0px solid black;"> </div> </body> </html> 话说,他还是比较圆的说。。。 进入正题 说起画圆、正弦图等肯定会经过一定计算的,所以稍稍复杂点: ① 创建路径 ② 创建图形路径 ③ 路径创建完成后关闭路径 ④ 设定绘制样式调用方法绘制之 复制代码 代码如下:我是一个圆 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> function draw() { //获取canvas对象 var canvas = document.getElementById('canvas'); if (canvas == null) { return false; } var context = canvas.getContext('2d'); context.fillStyle = '#99d9ea'; context.fillRect(0, 0, 300, 200); //填充画布结束 for (var i = 0; i < 5; i++) { context.beginPath(); context.arc(i * 25, i * 25, i * 10, 0, Math.PI * 2, true); context.closePath(); context.strokeStyle = 'red'; context.fill(); } } </script> </head> <body> <canvas id="canvas" width="300" height="200" > </canvas> <button onclick="draw();"> 绘制圆</button> <input type="color" /> </body> </html> 我们来看看绘制圆过程中其它地方都没有问题,但是创建圆路径这块值得考虑: arc方法参数很多,依次是:xy半径开始弧度(我们一般喜欢角度,所以要转换)结束弧度顺时针或者逆时针true为顺时针 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com