大部分的浏览器都支持2D Canvas上下文——包括Opera,Firefox,Konqueror和Safari。而且某些版本的Opera还支持3D Canvas,Firefox也可以通过插件形式支持 3D Canvas。
本文介绍主要介绍2D Canvas基础以及如何使用基本Canvas函数,如线条、形状、图像和文字等。为了理解此文章,你最好了解JavaScript基础知识。
下面开始我们的讲解:
canvas基础
创建Canvas的方法很简单,只需要在HTML页面中添加
为了能在JavaScript中引用Canvas,最好给它设置ID ;也需要给Canvas设定高度和宽度。
要在Canvas画布中绘制图形需要使用JavaScript。首先通过getElementById函数找到Canvas元素,然后初始化上下文,之后可以使用上下文API绘制各种图形。下面的脚本可以在Canvas中绘制一个矩形:
var elem = document.getElementById('myCanvas'); if (elem && elem.getContext) { var context = elem.getContext('2d'); if (context) { context.fillRect(0, 0, 150, 100); } }
context.fillStyle = '#00f'; context.strokeStyle = '#f00'; context.lineWidth = 4; context.fillRect (0, 0, 150, 50); context.strokeRect(0, 60, 150, 50); context.clearRect (30, 25, 90, 60); context.strokeRect(30, 25, 90, 60);
context.fillStyle = '#00f'; context.strokeStyle = '#f00'; context.lineWidth = 4; context.beginPath(); context.moveTo(10, 10); context.lineTo(100, 10); context.lineTo(10, 100); context.lineTo(10, 10); context.fill(); context.stroke(); context.closePath();
context.drawImage(img_elem, dx, dy); context.drawImage(img_elem, dx, dy, dw, dh); context.drawImage(img_elem, sx, sy, sw, sh, dx, dy, dw, dh);
var imgd = context.createImageData(50,50); var pix = imgd.data; for (var i = 0; n = pix.length, i < n; i += 4) { pix[i ] = 255; pix[i+3] = 127; } context.putImageData(imgd, 0,0);
注意: 不是所有浏览器都实现了createImageData。在支持的浏览器中,需要通过getImageData方法获取ImageData对象。
通过ImageData可以完成很多功能。如可以实现图像滤镜,或可以实现数学可视化 (如分形和其他特效)。来看一个实例:
var imgd = context.getImageData(x, y width, height); var pix = imgd.data; for (var i = 0, n = pix.length; i < n; i += 4) { pix[i ] = 255 - pix[i ]; pix[i+1] = 255 - pix[i+1]; pix[i+2] = 255 - pix[i+2]; } context.putImageData(imgd,x, y);
可以把上面代码放置在文档head部分中,或者放在外部JavaScript文件中。
文字
虽然最近的WebKit版本和Firefox 3.1 nightly build才开始支持Text API,为了保证文章完整性我决定仍在这里介绍文字API。
context对象可以设置以下text属性:
font:文字字体,同CSS font-family属性;
textAlign:文字水平对齐方式。可取属性值: start,end,left,right,center。默认值:start;
textBaseline:文字竖直对齐方式。可取属性值:top,hanging,middle,alphabetic,ideographic,bottom。默认值:alphabetic。
有两个方法可以绘制文字:fillText和strokeText。第一个绘制带fillStyle填充的文字,后者绘制只有strokeStyle边框的文字。两者的参数相同:要绘制的文字和文字的位置(x,y)坐标。还有一个可选选项——最大宽度。如果需要的话,浏览器会缩减文字以让它适应指定宽度。
文字对齐属性影响文字与设置的(x,y)坐标的相对位置。
ontext.fillStyle = '#00f'; context.font = 'italic 30px sans-serif'; context.textBaseline = 'top'; context.fillText ('Hello world!', 0, 0); context.font = 'bold 30px sans-serif'; context.strokeText('Hello world!', 0, 50);
可以把上面代码放置在文档head部分中,或者放在外部JavaScript文件中。
阴影
目前只有Konqueror和Firefox 3.1 nightly build支持Shadows API。API的属性为:shadowColor:阴影颜色。其值和CSS颜色值一致。
shadowBlur:设置阴影模糊程度。此值越大,阴影越模糊。其效果和Photoshop的高斯模糊滤镜相同。
shadowOffsetX和shadowOffsetY:阴影的x和y偏移量,单位是像素。
context.shadowOffsetX = 5; context.shadowOffsetY = 5; context.shadowBlur = 4; context.shadowColor = 'rgba(255, 0, 0, 0.5)'; context.fillStyle = '#00f'; context.fillRect(20, 20, 150, 100);
var gradient1 = context.createLinearGradient(sx,sy,dx,dy); gradient1.addColorStop(0, '#f00'); gradient1.addColorStop(0.5, '#ff0'); gradient1.addColorStop(1, '#00f'); var gradient2 = context.createRadialGradient(sx,sy,sr,dx,dy, dr);
可以把上面代码放置在文档head部分中,或者放在外部JavaScript文件中。
小结
Canvas是HTML5最让人期待的特性之一,目前已获得大部分Web浏览器支持Canvas可以帮助创建游戏、增强图形用户界面。2D context API提供大量图形绘制功能——我希望通过本文你了解了Canvas使用,并且你有兴趣了解更多!
以上就是【HTML5】Canvas基础知识讲解的内容,更多相关内容请关注PHP中文网(HdhCmsTestgxlcms测试数据)!
查看更多关于【HTML5】Canvas基础知识讲解的详细内容...