HTML5 学习手笔一:canvas API 画对角线
admin
2023-06-12 01:01:39
0

    自从停博一段时间后,一直在思考特别是今年开年,在想学习什么技术做为未来的技术储备。本来想加强下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元素 

请使用支持HTML5的浏览器浏览

 

 在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会讲述。变化方法绘制对角线的代码如下:

 

 

演示的DEMO如下:

 使用canvas 的save 和 restore注意事项

分为两种情况:

 

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

 

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

相关内容

热门资讯

华为正式发表半导体领域“新定律... 据凤凰卫视报道,5月25日,2026国际电路与系统研讨会在上海举行,华为公司董事、半导体业务部总裁何...
满身泥浆的他闪闪发光 持续强降雨致山洪暴发,云南某村小组长田如良带领全村群众安全转移,自己却一度被泥石流吞没,成了“泥人守...
山西矿难的根源在哪里?学者吁打... 据凤凰卫视报道,沁源发生特大煤矿瓦斯爆炸事故后,山西决定对全省煤矿领域展开安全风险的“彻查整治”。有...
俄方称将对基辅军工联合体发动打... △基辅(资料图)当地时间25日,俄罗斯外交部发布通报称,俄军将对乌克兰首都基辅的军工联合体发动一系列...
深耕特色兴实业 因地制宜谱新篇 近期,全国各地立足资源禀赋、深耕产业赛道,处处涌动着产业升级、增收致富的蓬勃生机。 向新攀登 河南跑...
荣耀600全系搭载教科书级护眼... 快科技5月25日消息,荣耀600系列于今晚正式发布,全系配备教科书级护眼屏。 据悉,荣耀600系列首...
近万“青鸟”上街参加挺军购游行... 海峡导报综合报道 为抗议在野阵营通过7800亿元(新台币,下同)特别预算,台湾亲绿民团23日下午发起...
华为公布半导体领域重大突破 5月25日,2026国际电路与系统研讨会在上海举行,华为公司董事、半导体业务部总裁何庭波在题为《半导...
全焦段4K实况照片+8000m... 一、前言:全能无短板!荣耀600 Pro闪亮登场 现如今的中高端手机市场,可以说是卷得五花八门。大家...
强烈信号,家长们现在要连夜排队... 北京家长凌晨3点排队,只为孩子能上个中职学校。5月10日这天,是北京昌平职业技术学校自主招生面试日:...