在HTML5一览中,我们提到html 5被冠以很多高帽,其中最高的一顶、备受争议的就是"Flash杀手"。IT评论界老喜欢用这个词了,杀手无处不在。不管是不是杀手,HTML 5引进的一些新特性确实让人兴奋不已。最令人期待的之一就是 canvas元素。
作为HTML5标准的一部分,Canvas元素允许脚本动态渲染点阵图像。这个 HTML 元素是为了客户端矢量图形而设计的。它自己没有行为,但却把一个绘图 API 展现给客户端 javascript 以使脚本能够把想绘制的东西都绘制到一块画布上。HTML 5 canvas 提供了通过 JavaScript 绘制图形的方法,此方法使用简单但功能强大。每一个 canvas 元素都有一个"上下文( context )" (想象成绘图板上的一页),在其中可以绘制任意图形。
大部分的浏览器都支持 2D canvas 上下文——包括 Opera, Firefox, Konqueror 和 Safari。而且某些版本的 Opera 还支持 3D canvas ,firefox 也可以通过插件形式支持 3D canvas 。我们甚至可以在 IE 中使用 <canvas> 标记,并在 IE 的 VML 支持的基础上用开源的 JavaScript 代码(由 Google 发起)来构建兼容性的画布。 参见:http://excanvas.sourceforge.net/。
效果演示
<html>
<head>
<title>Canvas tutorial</title>
<script type="text/javascript">
function draw() {
var ctx = document.getElementById('canvas').getContext('2d');
//绘制红色的画布
ctx.fillStyle = '#f00';
ctx.fillRect(0,0,450,300);
ctx.translate(75,75);
//绘制大五角星
ctx.save();
ctx.rotate(Math.PI*2/7);
drawStar(ctx,40);
ctx.restore();
//绘制四个小五角星
ctx.save();
ctx.translate(80,-50);
drawStar(ctx,10);
ctx.restore();
ctx.save();
ctx.translate(110,-10);
drawStar(ctx,10);
ctx.restore();
ctx.save();
ctx.translate(110,30);
drawStar(ctx,10);
ctx.restore();
ctx.save();
ctx.translate(80,70);
drawStar(ctx,10);
ctx.restore();
}
//绘制五角星函数
function drawStar(ctx,r){
ctx.save();
ctx.beginPath()
ctx.moveTo(r,0);
for (var i=0;i<9;i++){
ctx.rotate(Math.PI/5);
if(i%2 == 0) {
ctx.lineTo((r/0.525731)*0.200811,0);
} else {
ctx.lineTo(r,0);
}
}
ctx.closePath();
ctx.fillStyle='#FFFF00';
ctx.fill();
ctx.restore();
}
</script>
</head>
<body onload="draw();">
<canvas id="canvas" width="800" height="300"></canvas>
</body>
</html>
HTML5 代码如下:
03 |
< title >Canvas tutorial</ title > |
04 |
< script type = "text/javascript" > |
06 |
var ctx = document.getElementById('canvas').getContext('2d'); |
08 |
ctx.fillStyle = '#f00'; |
09 |
ctx.fillRect(0,0,450,300); |
13 |
ctx.rotate(Math.PI*2/7); |
18 |
ctx.translate(80,-50); |
22 |
ctx.translate(110,-10); |
26 |
ctx.translate(110,30); |
35 |
function drawStar(ctx,r){ |
39 |
for (var i=0;i< 9 ;i++){ |
40 |
ctx.rotate(Math.PI/5); |
42 |
ctx.lineTo((r/0.525731)*0.200811,0); |
48 |
ctx.fillStyle = '#FFFF00' ; |
54 |
< body onload = "draw();" > |
55 |
< canvas id = "canvas" width = "800" height = "300" ></ canvas > |
最新文章
- Windows Phone 十九、罗盘
- FMX下Edit只能输入数字
- 使用Spring.net中对Ado.net的抽象封装来访问数据库
- zabbix企业级监控概述和部署
- yii2-datepicker/datetimepicker插件使用
- C#中 StringBuilder类 与 String类的区别---(转)
- hdu 2066 一个人的旅行 Dijkstra
- 函数page_cur_search_with_match
- Hash - a javascript dictionary object.
- JavaScript DOM省市自适配select菜单
- Effective前端1---chapter 2 用CSS画一个三角形
- 深入浅出的webpack4构建工具---Scope Hoisting(十六)
- 转:vue+canvas如何实现b站萌系登录界面
- ubuntu16.04 无法连接wifi和校园宽带问题的解决办法
- 2、Keepalived提供日志与双主模型演示
- <;span>; 标签
- Python面向对象(类的成员之属性)
- 洛谷 P2431 正妹吃月饼 解题报告
- Linux 键盘输入#的时候变成&#163;
- CentOS6.5加域
热门文章
- 响应式布局--设置rem自适应
- Dynamics 365-下载新版本的开发工具
- 8.1 编写USB鼠标驱动程序,并测试
- 基于pyecharts的IT各行业薪资展示
- flask(列表实现)
- go学习笔记-类型转换(Type Conversion)
- Oozie 配合 sqoop hive 实现数据分析输出到 mysql
- MapRudecer
- 「日常训练」 Soldier and Cards (CFR304D2C)
- 接口测试工具postman(四)导入导出文件