HTML5 学习手笔一:canvas API 画对角线

简介:

   自从停博一段时间后,一直在思考特别是今年开年,在想学习什么技术做为未来的技术储备。本来想加强下Android 底层方面的知识,但觉得工作上跟这块有所涉及再学习的话有点懒,由于Windows Phone 7 开发工作上没有涉及,目前也算是入门,未来短时间内不会考虑将其应用于工作选择,故不做考虑。现选择了两个方向为:IOS和HTML5,手上的毛主席相对比较紧还没有买MAC,所以优先选择了HTML5先涉猎一下,以后再考虑精通或者再涉猎IOS,作为未来的技术储备。

 

     关于HTML5的简介和推广者网上一大把资料这里就略过,直接进入主题。

      


在页面中加入HTML5->canvas

   在HTML页面中插入canvas 元素非常直观。只要在HTML源码中插入canvas标签:

<canvas id="diagonal" style="border:1px solid;" width="200" height="200"></canvas> //带实心边框的canvas元素 

 

 在canvas中绘制一条对角线

步骤分为:

 

  1. 首先获得页面元素中的canvas对象: var canvas=document.getElementById('diagonal');
  2. 得到canvas的上下文 :var context=canvas.getContext('2d'); 
  3. 通知canvas将要开始绘制一个新的图形:context.beginPath();
  4. 将当前的位置移动到新的目标坐标(x,y)。(不绘制):context.moveTo(0,0);
  5. 将当前位置移动到新的目标坐标(x,y),而且在两个坐标之间画一条直线:context.lineTo(140,70);
  6. 调用canvas根据上面的指示绘制图:context.stroke();

 

根据上面的步骤,编写的代码为:

<! DOCTYPE html >
< html >
         < canvas  id ="diagonal"  style ="border:1px solid;"  width ="200"  height ="200" ></ canvas >
         < script >
                 function drawDiagonal()
                {
                    var canvas=document.getElementById('diagonal_line'); // 获得canvas对象
                    var context=canvas.getContext('2d');       // 获取canvas的 上下文
                    // 用绝对坐标来创建一条路径
                   context.beginPath();
                   context.moveTo(0,0); // 将光标移动到x为0,y为0的地方开始准备从这里开始绘制
                   context.lineTo(140,70); // 绘制到x 坐标为140,y坐标为70的地方

                   // 将这条线绘制到canvas上
                   context.stroke();   // 只有调用stroke canvas 才会绘制图像显示结果
                }

           window.addEventListener("load",drawDiagonal, true);
         </ script >

</html>

 效果如下例子:

 

 注意: beginPath、moveTo、lineTo都不会直接修改canvas的展示结果。canvas中很多用于设置样式和外观的函数也同样不会直接修改显示结果。只有当对路径应用绘制(storke)或填充(fill)方法时,结果才会显示出来。否则,只有在显示图像、显示广本或者绘制、填充和清除矩形框的时候,canvas才会马上更新。

使用变换方法在canvas 上绘制对角线

这个方法较之上面的方法多了三个步骤:

 

  1. 首先先保存当前绘图状态save
  2. 再用平衡方法绘制上下文,使用translate
  3. 最后再绘图完毕后使用restore 恢复原有的绘图状态。 

 

至于为什么要使用save和restore方法,演示完DEMO会讲述。变化方法绘制对角线的代码如下:

 <script>
                 function drawDiagonal()
                {
                     var canvas=document.getElementById('diagonal');
                     var context=canvas.getContext('2d');
                     // 保存当前绘图的状态
                   context.save();
                   
                    // 向右下方移动绘图上下文
                   context.translate(70,140); // 平移-> x表示将坐标原点向左右移动多少个单位 y表示将坐标原点向上下移动多少个单位
                   
                    // 画图
                   context.beginPath();
                   context.moveTo(0,0);
                   context.lineTo(70,-70);
                   context.stroke();

                   // 恢复原有的绘图状态
                  context.restore();

// 之所以要使用save 和 restore 是因为在操作canvas 时先把状态保存,然后如果下面还需要操作canvas时将状态恢复过来不会,这样不会影响到上面我们画完的结果。
                }
                window.addEventListener("load",drawDiagonal, true);

        </script>

 

演示的DEMO如下:

 使用canvas 的save 和 restore注意事项

分为两种情况:

 

  1. 如果你本身绘制的图可以一次性绘制完,那可以不使用save和restore
  2. 如果你绘制图绘制一次后,使用stroke或才fill 后,底下还需要再次做绘制的动作,那么使用save和restore 会更好,不会跟上次的画图冲突,得不到我们想要的效果。 

 

 几个简单的小例子,稍微了解了HTML5 的一些编写方式和它强悍的API,虽然目前还没有好用的IDE来编写HTML5应用或游戏,但随着HTML5一步步的来临,对它的未来应用非常有信心。



 本文转自 terry_龙 51CTO博客,原文链接:http://blog.51cto.com/terryblog/797773,如需转载请自行联系原作者

相关文章
|
3月前
|
API 数据安全/隐私保护 UED
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
149 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
|
3月前
|
人工智能 数据可视化 API
自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
本文介绍了使用HarmonyOS的Calendar Kit开发日程管理应用的过程。通过API 13版本,不仅实现了创建、查询、更新和删除日程等基础功能,还深入探索了权限请求、日历配置、事件添加及查询筛选等功能。实战项目中,开发了一个智能日程管理工具,具备可视化管理、模糊查询和智能提醒等特性。最终,作者总结了模块化开发的优势,并展望了未来加入语音助手和AI推荐功能的计划。
204 1
|
6月前
|
数据可视化 前端开发
Twaver-HTML5基础学习(39)鹰眼可视化视图组件(OverView)
本文介绍了如何在Twaver-HTML5中使用鹰眼(Overview)可视化视图组件,它作为Network的缩略图,允许用户通过缩略图导航Network,支持单击、双击和框选操作来控制Network视图。
88 5
Twaver-HTML5基础学习(39)鹰眼可视化视图组件(OverView)
|
5月前
|
人工智能
|
6月前
|
数据可视化 前端开发 容器
Twaver-HTML5基础学习(41)列表可视化视图组件(List)
本文介绍了如何在Twaver-HTML5中使用列表可视化视图组件(List),展示了如何创建列表、设置列表属性(如行高、间隔颜色等)、实现数据绑定和排序,以及如何通过React代码示例进行操作。
76 2
Twaver-HTML5基础学习(41)列表可视化视图组件(List)
|
6月前
|
移动开发 数据可视化 HTML5
Twaver-HTML5基础学习(40)表格可视化视图组件(Table)
本文介绍了如何在Twaver-HTML5中使用表格可视化视图组件(Table),包括创建表格、定义列对象、实现数据绑定和排序,以及处理表格事件和获取表格数据的方法。
76 1
|
5月前
html基础知识学习
html基础知识学习
56 0
|
移动开发 前端开发 API
《HTML5 Canvas游戏开发实战》——3.4 小结
本节书摘来自华章计算机《HTML5 Canvas游戏开发实战》一书中的第3章,第3.4节,作者:张路斌著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1014 0
|
移动开发 JavaScript 前端开发
《HTML5 Canvas游戏开发实战》——3.3 自定义画板
本节书摘来自华章计算机《HTML5 Canvas游戏开发实战》一书中的第3章,第3.3节,作者:张路斌著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1389 0
|
移动开发 JavaScript 前端开发
《HTML5 Canvas游戏开发实战》——3.2 图形的渲染
本节书摘来自华章计算机《HTML5 Canvas游戏开发实战》一书中的第3章,第3.2节,作者:张路斌著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1291 0

热门文章

最新文章