HTML 5入门知识(三)

  <canvas>标签

在网页中使用canvas元素,像使用其他HTML标签一样简单,然后利用JavaScript脚本调用绘图API,绘制各种图形。canvas拥有多种绘制路径、矩形、圆形、字符及添加图形的方法。

  利用<canvas>标签绘图基本流程

1、获取canvas对象

2、创建二维的绘图上下文对象

3、在canvas上绘制文字

链接:

https://cruxf.github.io/canvas1/text.html

  绘制基本的图形

绘制直线:

moveTo()方法用于创建新的子路径,并设置其起始点。lineTo()方法则设置了直线路径的终点;而stroke()方法用于沿该路径绘制一条直线,如:

 绘制矩形

绘图API为绘制矩形提供了两个专用的方法:strokeRect()和fillRect(),可分别用于绘制矩形边框和填充矩形区域。在绘制之前,往往需要先设置样式,然后才能进行绘制。其中,strokeStyle可设置矩形边框颜色,fillStyle可设置填充颜色,lineWidth可设置边框宽度。

链接:

https://cruxf.github.io/canvas1/squares.html

 绘制圆形

在canvas中,所有基本图形都是以路径为基础的,通常会调用linTo()、rect()和arc()等方法设置一些路径。在最后使用fill()或stroke()方法进行绘制边框或填充区域时,都是参照这个路径来进行的。使用路径绘图基本分为如下3个步骤:

1、创建绘图路径。常用到beginPath()和closePath()方法,每次调用beginPath()方法都会产生一个新的子路径。

2、设置绘图样式。使用strokeStyle属性设置边框颜色;使用lineWidth属性设置边框宽度;使用fllStyle属性设置填充颜色。

3、绘制图形。stroke()方法绘制边框;fill()方法绘制填充区域。

链接:

https://cruxf.github.io/canvas1/circular.html

绘制三角形

绘制三角形同样需要通过绘制路径的方法来实现,基本步骤与绘制圆形差不多,如:

closePath()方法习惯性地放在路径设置的最后一步,不要认为是路径设置的结束,因为在此之后,还可以继续设置路径。

链接:

https://cruxf.github.io/canvas1/triangle.html

图形组合

在canvas绘图中,可以通过globalCompositeOperation属性来设置如何在两个图形叠加的情况下组合颜色,用法如下:

参数value的合法值有12个,决定了12种图形组合的类型,默认值是source-over。12种组合类型如下:

1、copy:只绘制新图形,删除其他所有内容。

2、darker:在图形重叠的地方,颜色由两个颜色值相减后决定。

3、destination-atop:已有的内容只在它和新的图形重叠的地方保留,新图形绘制于内容之后。

4、destination-in:在新图形以及已有画布重叠的地方,已有内容都保留,所有其他内容成为透明的。

5、destination-out:在已有内容和新图形不重叠的地方,已有内容保留,所有其他内容成为透明的。

6、destination-over:新图形绘制于已有内容的后面。

7、lighter:在图形重叠的地方,颜色由两种颜色值的加值来决定。

8、source-atop:只有在新图形和已有内容重叠的地方,才绘制新图形。

9、source-in:只有在新图形和已有内容重叠的地方,新图形才绘制,所有其他内容成为透明的。

10、source-out:只有在和已有图形不重叠的地方,才绘制新图形。

11、source-over:新图形绘制于已有图形的顶部,这是默认行为。

12、xor:在重叠和正常绘制的其他地方,图形都成为透明的。

函数RectArc(context)是用来绘制组合图形的,使用方法translate()移动到不同的位置。

链接:

https://cruxf.github.io/canvas1/combinedgraph.html

绘制曲线

在canvas中,绘图API提供了多种曲线的绘制方法,主要的曲线绘制方法有arc()、arcTo()、quardraticCurveTo()和bezierCureveTo()。

使用arc()方法,如:

假如在绘制圆弧的时候用closePath()闭合绘制路径,那么就会生成一个半圆。

链接:

https://cruxf.github.io/canvas1/curve1.html

使用arcTo()方法:

arcTo()方法使使用切线的方法绘制弧线,使用两个目标点和一个半径,为当前的子路径添加一条弧线。与arc()方法相比,同样是绘制弧线,绘制思路和侧重点不同。

链接:

https://cruxf.github.io/canvas1/curve2.html

使用quadraticCurveTo()方法:

二次样条曲线是曲线的一种,canvas绘图API专门提供了此曲线的绘制方法。quadraticCurveTo()方法为当前的子路径添加一条二次样条曲线。

链接:

https://cruxf.github.io/canvas1/curve3.html

使用bezierCurveTo()方法:

贝塞尔曲线是应用于二维图形应用程序中的数学曲线。与二次样条曲线相比,贝塞尔曲线使用了两个控制点,从而可以创建更复杂的曲线图形。

链接:

https://cruxf.github.io/canvas1/curve4.html

绘制文本

通过<canvas>标签,可以使用填充的方法绘制文本,也可以使用描边的方法绘制文本,在绘制文本之前,还可以设置文字的字体样式和对齐方式。绘制文本有两种方法,即填充绘制方法fillText()和描边绘制方法strokeText(),如:

有些时候,开发人员需要知道所绘制的文本宽度,以方便进行布局。绘图API挺了获取绘制文本宽度的方法,measureText()方法就是用来获取文本的宽度。

链接:

https://cruxf.github.io/canvas1/text1.html

创建对象阴影:

链接:

https://cruxf.github.io/canvas1/text2.html

 绘制线性渐变:

使用渐变需要三个步骤:首先是创建渐变对象;其次是设置渐变颜色和过渡方式;最后将渐变对象赋值给填充样式或描边样式。

线性渐变是指起始点和结束点之间线性的内插颜色值,设置渐变颜色需要在渐变对象上使用addColorStop()方法,在渐变中的某一点添加一个颜色变化。如:

链接:

https://cruxf.github.io/canvas1/lineargradient.html

 绘制径向渐变:

径向渐变是指两个指定圆的圆周之间放射性地表现颜色过渡效果。如:

链接:

https://cruxf.github.io/canvas1/radialgradient.html

 绘制图像:

使用drawImage()方法可以将图形添加到canvas画布中,即绘制一幅图像,有3种方法。

1、把整个图像复制到画布中,将其放置到指定的左上角坐标位置,并且将每个图像像素映射成画布坐标系统的一个单元,如:

2、把整个图像复制到画布中,但是允许用画布单位来指定想要的图像宽度和高度,如:

3、使用复杂,暂且不提。

裁切图形:

在路径绘图中使用了两种绘图方法,即用于绘制线条的stroke()方法和用于填充区域的fill()方法。关于路径的处理,还有一种方法叫作裁切方法clip()。

裁切的区域是通过路径来确定的,和绘制线条的方法和填充区域的方法一样,也需要预先确定绘图路径,再执行裁切区域路径方法clip(),这样就确定了裁切区域,如:

链接:

https://cruxf.github.io/canvas1/drawimg.html

时间: 2024-08-01 22:42:49

HTML 5入门知识(三)的相关文章

TypeScript入门知识三(面向对象特性)

1.类(class) 类是TypeScript的核心,使用TypeScript开发时,大部分代码都是写在类里面的. 类的定义 ,属性控制符 public(允许外部访问,也是默认的方式),private(私有,只能在类的内部访问),protected(受保护的,可以在类的内部和子类中访问) class Person { public name:string; age:number; eat (){ console.log("输出"): } } 类的实例化,通过new关键字 var p1

零基础学Python应该学习哪些入门知识及学习步骤安排

众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位,薪资待遇呈上涨趋势.很多人都想学习Python,那么零基础学Python应该学习哪些入门知识呢? Python入门知识一:解释器. Python是一种面向对象的解释型计算机程序设计语言,因此想要学好Python你必须要了解解释器.由于Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行

ESB (Enterprise Service Bus)入门知识

本文主要介绍ESB相关的一些技术概念与术语,还有一些入门的需要了解的基础知识,并初步了解介绍一些ESB产品.由于本人刚接触ESB,所以将自己的学习内容与过程,记录下来!愿在这里与大家分享一下,共同进步与提高! [转载使用,请注明出处:http://blog.csdn.net/mahoking] EAI 企业应用集成(Enterprise Application Integration):是完成在组织内.外的各种异构系统.应用和数据源之间共享.交换信息.协作的途径,方法学,标准和技术. 所连接的应

MySQL入门知识

简单介绍下吧,MySQL应用的场景大多数互联网公司第一次卖身是卖个了sun好像是10亿,第二次是连同sun自己,以74亿美元被卖给了Orecle~后面MySQL原作者站出来说,MySQL会存在闭源风险,整了个MariaDB~我也是醉了,也不考虑下我们的痛苦!下面简要介绍下MySQL的入门知识. 一.MySQL有三种定义语言 DDL:定义语言,比如:创建一张表,定义表的属性如索引.宽位等待 DML:操作语言,增删查改 DCL:控制语言,比如限定那个账户只能通过那个IP登入,又比如那个账户能访问那些

BootStrap入门教程 (三)

上讲回顾:Bootstrap的基础CSS(Base CSS)提供了优雅,一致的多种基础Html页面要素,包括排版,表格,表单,按钮等,能够满足前端工程师的基本要素需求. Bootstrap作为完整的前端工具集,内建了大量的强大优雅可重用的组件,包括按钮(Button),导航(Navigation),标签(Labels),徽章(Badges),排版(Typography),缩略图( thumbnails),提醒(Alert),进度条(progress bar),杂项(Miscellaneous).

前端制作入门知识

原文链接:http://caibaojian.com/frontend-base.html 前端制作入门知识 A-A+ 前端博客•2015-08-18•前端开发•CSS | 前端基础•2020View1 文章目录 一.名词解释 二.文本格式化 三.表单表格 四.文本格式化 五.CSS布局 六.html5视频音频 七.一些约定 八.命名空间 九.基本设置-public.css 十.框架设置 来自百度文库:web前端学习总结(精华版),里面讲了许多的知识,非常适合刚进入前端的童鞋,就算一些有点基础的

Android 自定义控件开发入门 (三)

上两次我们从如何自定义控件讲起,列举了View的一些Api,说明了一些在自定义的时候,可以进行重写的方法,然后通过一个例子的两种写法向大家展示了最基本的自定义控件和我们要充分了解并积极重写View方法的精神,这次我们将继续进行学习! 现在请大家回想一下我们使用安卓原生控件时的感受,一个好的控件是可以在xml中进行各种属性的操作的,而自定义控件往往有一些特殊的需求,今天我要讲的就是安卓给自定义控件添加自定义的属性. 下面再给大家具体介绍一下如果自定义的View需要有自定义的属性我们该如何处理: 我

BootStrap入门教程 (三) :可重用组件(按钮,导航,标签,徽章,排版,缩略图,提醒,进度条,杂项)

上讲回顾:Bootstrap的基础CSS(Base CSS)提供了优雅,一致的多种基础Html页面要素,包括排版,表格,表单,按钮等,能够满足前端工程师的基本要素需求. Bootstrap作为完整的前端工具集,内建了大量的强大优雅可重用的组件,包括按钮(Button),导航(Navigation),标签(Labels),徽章(Badges),排版(Typography),缩略图( thumbnails),提醒(Alert),进度条(progress bar),杂项(Miscellaneous).

Python基础入门知识

Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新

zookeeper 入门知识

作为开启分布式架构的基石,除了必会还有的选么 自己的一些理解,有错误的话请一定要给予指正! 一.是什么? 分布式数据一致性的解决方案. 二.有什么用 数据的发布/订阅(配置中心)  . 负载均衡(dubbo利用了zookeeper机制实现负载均衡) .命名服务. master选举(kafka.hadoop.hbase).分布式队列.分布式锁. zookeeper入门知识 1.CAP理论和BASE理论 参考文献: http://www.jdon.com/bigdata/how-to-underst