html5高级程序设计第二章之Canvas API上篇
- HTML5 Canvas概述:Canvas的概念最初是由苹果公司提出的,用于在Mac OS X WebKit中创建控制板部件(dashboard widget).在Canvas出现之前,开发人员若要在浏览器中使用绘图API,只能使用Adobe的Flash和SVG(Scalable Vector Graphics,可伸缩矢量图形)插件,或者只有IE才支持的VML(Vector Markup Language,矢量标记语言),以及其他一些稀奇古怪的JavaScript技巧。假设我们要在没有canvas元素的条件下绘制一条对角线--听起来似乎很简单,但实际上如果没有一套二维绘图API的话,这会是一项相当复杂的工作。HTML5 Canvas能够提供这样的功能,对浏览器端来说此功能非常有用,因此Canvas被纳入了HTML5规范。起初,苹果公司曾暗示可能会为WHATWG(Web Hypertext Application Technology Working Group,Web超文本应用技术工作组)草案中的Canvas规范申请知识产权,这在当时引起了一些Web标准化追随者的关注。不过,苹果公司最终还是按照W3C的免版税专利权许可条款公开了其专利。
- 基本的Canval元素:<canvas></canvas>
- 使用Cancas编程,首先要获得其上下文(context)。接着在上下文中执行动作,最后将这些动作应用到上下文中
- Canvas坐标:从左上角开始,X轴沿水平方向(按像素向右延伸),Y轴沿垂直向下延伸。左上角坐标x=0,y=0的点称为坐标原点,坐标图如下:
- 使用HTML5 Canvas API
- 检查浏览器支持情况:
try{ document.createElement("canvas").getContext("2d"); document.getElementById("support").innerHTML = "HTML5 Canvas is support in your browser";//获取canvas元素及其绘图的上下文 } catch(e){ document.getElementById("support").innerHTML = "HTML5 Canvas is NOT support in your browser"; }
- 在页面中加入canvas:
//显示出一块200*200像素的隐藏区域 <canvas id="diagonal" style="border:1px solid;" height="200" width="200"></canvas>
- 在canvas中绘制一条对角线:
<!DOCTYPE html> <html> <title>Diagonal line example</title> <canvas id="diagonal" style="border: 1px solid;" width="200" height="200"> </canvas> <script> function drawDiagonal() { // 通过id取得canvas元素及其绘图上下文 var canvas = document.getElementById('diagonal'); var context = canvas.getContext('2d');//获取一个二维上下文 // 用绝对坐标来创建一条路径 context.beginPath(); context.moveTo(70, 140); context.lineTo(140, 70); // 将这条直线绘制到canvas上 context.stroke(); } window.addEventListener("load", drawDiagonal, true); </script> </html>
在画直线的过程中调用了三个方法-----beginPath moveTo和lineTo方法,传入这条线的起点和终点的坐标。从以上的例子中可以看出,canvas中所有的操作都是通过上下文对象来完成的。对上下文的很多操作都不会立即反映到页面上,beginPath,moveTo,以及lineTo这些函数都不会直接修改canvas的展示结果。canvas很多用于设置样式和外观的函数都不会直接修改显示结果。只有对路径应用绘制(stroke)或填充(fill)方法,结果才会显示出来。
posted on 2012-05-11 19:01 Keep Running 阅读(2321) 评论(1) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述