HTML5- Canvas入门(一)画线

canvas是一个H5的标签:

<canvas> </canvas>

canvas本身没有任何的绘图能力,所有的绘图工作都是通过js来实现的。通常我们在js通过getElementById来获取要操作的canvas(这意味着咱得给canvas设个id):

<canvas id="myCanvas"></canvas>

<script>
var c = document.getElementById("myCanvas"); //获取要操作的canvas
//操作canvas的代码...
</script>

注意最好在一开始的时候就给canvas设置好其宽高(若不设定宽高,浏览器会默认设置canvas大小为宽300、高100像素),而且不能使用css来设置(会被拉伸),建议直接写于canvas标签内部:

<canvas id="myCanvas" width="200" height="200"></canvas>

也可以在js脚本中设置:

<canvas id="myCanvas"></canvas>

<script>
var c = document.getElementById("myCanvas");
c.width=200;
c.height=200;
</script>

关于canvas大小需要知道的一点是,后续咱们对canvas所做的全部绘图操作,超出此大小范围的部分是不可见的。

接着在聊如何在canvas上绘图前,咱得先说说.getContext(“2d”)这东西。
.getContext() 是canvas的绘图对象/方法,要让canvas执行绘图工作必须先获取canvas的.getContext()对象来执行。

.getContext()只接受一个参数,该参数用于获取canvas的绘图环境,例如.getContext(“2d”)表示该canvas的绘图环境为2D平面(可以绘制文本、直线、弧线、矩形、圆形等)。当前H5只支持2D环境,在不久的将来会开放3D绘图功能。(故咱可将“getContext”翻译为“获取绘图环境”)

先来个小例子,从最简单的绘制直线开始:

<canvas id="myCanvas" width="200" height="200" style="border:solid 1px #CCC;">
您的浏览器不支持canvas,建议使用最新版的Chrome
</canvas>

<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d"); //获取该canvas的2D绘图环境对象
ctx.moveTo(10,10);   //定义绘画开始的位置
ctx.lineTo(150,50);  //画一条直线,结束点坐标是x=150,y=50
ctx.stroke();  //描边
</script>

效果如下:
HTML5- Canvas入门(一)画线

在这里我们使用了3个getContext(“2d”)对象的绘图方法:

.moveTo(x坐标 , y坐标)      可以理解为定位画笔在画布上的位置(注意所有绘图方法所定义的坐标是相对canvas而言的而不是浏览器窗口,对canvas来说,最左上角的点的坐标是(0,0))

.lineTo(x坐标 , y坐标)      顾名思义,就是画一条直线到某个点,很好理解。需要知道的是此方法仅仅做路径运动,而不存在任何视觉上的绘图效果(上色、描边)

.stroke()     描边方法,有玩过AfterEffect的朋友会很清楚,不给运动路径加stroke特效的画是不存在描边效果的,canvas也一样,想要运动路径轨迹能有视觉效果,需要使用相应的上色/描边方法。

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/10637.html

(0)
江山如画的头像江山如画管理团队
国家级教学成果奖(一等奖)总结报告分享
上一篇 2022年6月23日 上午8:43
HTML5- Canvas入门(二)画线并设置颜色
下一篇 2022年7月10日 上午8:57

99%的人还看了以下文章

  • python使用列表生成式生成列表 其元素为100以内所有能被3整除的数

    python : 不使用列表生成式,生成元素为100以内所有能被3整除的数,代码如下: m=[] for i in range(3,100): if (i%3==0): m.append(i) print(m) 使用列表生成式生成列表,其元素为100以内所有能被3整除的数,代码: n=[i for i in range(3,100) if(i%3==0)] …

    2020年1月2日
    147.8K0
  • JSP分页思想2—核心代码

    一、通过order by id desc limit ?,? 控制当前页面显示的记录 显示第几页,共几页,上一页 下一页 <% int PageSize=2; //一页显示的记录数 int RowCount=0; //记录总数 int PageCount=0; //总页数 int intPage; //待显示页码 int i;//循环变量 String…

    2019年10月30日
    20.6K0
  • JSP实现用户登录总次数及用户最后一次登录时间功能(附代码)

    实现原理: 数据库表中,设置两个字段total_login_count(登录总次数,int型)和 last_login_time(最后登录时间,datetime型) 1. 记录用户的登录总次数 用户每登录一次,将数据库中的相应字段值加 1,代码如下: String sql =”update testuser set total_login_count = t…

    编程开发 2018年7月3日
    10.1K0
  • 什么是单元测试,单元测试快速入门教程一

    单元测试概述 单元测试是在软件开发过程中要进行的最低级别的测试活动或者说是针对软件设计的最小单位—程序模块(程序中定义的函数、子程序、类或方法),进行正确性检验的测试工作,目的在于发现每个程序模块内部可能存在的差错或缺陷。 在单元测试活动中,软件的独立单元将在与程序的其它部分相隔离的情况下进行测试,主要工作分人工静态检查(静态测试)和动态执行跟踪(动态测试)…

    2018年4月16日
    9.4K0
  • MySql数据库Timestamp、time、datetime 区别及使用详解

    对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 。 不仅新手,包括一些有经验的程序员还是比较迷茫,究竟我该用哪种类型来存储日期时间呢? 一个完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction],它可分为两部分:date部分和time部分,其中,date部分对应格式中的“YYYY-MM-DD…

    编程开发 2018年5月2日
    8.1K1
  • 程序设计基础(C语言)—教学设计、教案

    教学设计——程序设计基础 教学基本信息 课程名称 程序设计基础 性质 专业基础课 学分 3 学时 48 题目 数据类型 专业年级 软件工程专业一年级 教材 书名:C程序设计(第五版) 出版社:清华大学出版社    出版日期: 2017年8月 教学背景分析 一、学习内容分析: 本节课要介绍的知识点——数据类型比较简单,但都是概念。对于这些陌生的、枯燥的纯概念性…

    2020年4月10日
    15.7K0

发表回复

登录后才能评论