网易首页 > 网易号 > 正文 申请入驻

如何在页面中添加Canvas元素与变换的使用

0
分享至

在页面中加入canvas元素

在页面中插入canvas元素非常直观,如下:

以上代码会在页面中创建一个200 X 200像素的区域。但是注意该区域是不可见的。如果要为其添加一个边框,可以通过设置一些CSS样式完成。

上边的代码我们为canvas指定了一个square属性,主要是方便我们可以使用dom方便获取到canvas的对象,id属性时非常重要的,因为我们对canvas的一切操作都是通过JS来控制的,如果没有id获取canvas元素会非常复杂。

上边的代码会在页面的效果如下:

虽然仅仅是一个空白的方块,但是艺术家可以在一张白纸上画出美丽的图画。现在我们就尝试在这张白纸上画一条对角线吧。

//获取canvas对象
var canvas = document.getElementById(“square”);
//获取context对象
var context = canvas.getContext(“2d”);
//用绝对坐标来创建一条路径
context.beginPath();
context.moveTo(70,140);
context.lineTo(140,70);
//将这条线绘制在canvas上
context.stroke();

这段JS代码虽然简单,但是却展示出来使用Canvas API的重要流程。

  1. 通过id获取canvas对象
  2. 调用canvas对象的getContext()方法,并传入希望使用canvas的类型。这里我传入了“2d”来获取一个二维上下文。
  3. 调用三个方法,beginPath、moveTo、lineTo。传入了这条线的起点终点和坐标。

方法moveTo和lineTo实际上并不画线,而是在结束canvas操作的时候,通过调用context.stroke()方法完成线条的绘制。绘制结果如下:

变换

现在我们来说一下在canvas上绘制图像的另一种方式——使用变换。接下来的代码显示结果和上面一样。只是绘制对角线的代码不同。这个示例可能会让人感觉使用变换增加了不必要的复杂性。但是实际上变换是实现复杂canvas操作的最好方式。在后面的示例中将会看到,我们使用了大量的变换,而这对数据Canvas的复杂功能至关重要。

我们可以把变换当成是介于开发人员发出的指令和canvas显示结果之间的一个修正层。不管开发中是否使用变换,修正层始终都是存在的。

修正——在绘制系统中的说法是变换——在应用的时候可以被顺序应用、组合或者随意修改。每个绘制操作的结果显示在canvas上之前都要经过修正层去做修正。虽然这么做增加了额外的复杂性,但却为绘制系统添加了更为强大的功能,可以像目前主流图像编辑工具那样支持实时的图像处理,所以API中这部分内容的复杂性是必要的。

translate函数

//获取canvas对象

var canvas = document.getElementById(“square”);

//获取context对象

var context = canvas.getContext(“2d”);

//保存当前绘图状态

context.save();

//向右下方移动绘图上下文

context.translate(70,140);

//以原点为起点,绘制与前面相同的线段

context.beginPath();

context.moveTo(0,0);

context.lineTo(70,-70);

context.stroke();

//恢复原有的绘图状态

context.restore();

解析:

  1. 通过id获取canvas对象
  2. 调用getContext(“2d”)获取上下文对象
  3. 保存尚未修改的context
  4. 调用translate()函数。通过这个操作,当平移行为发生的时候,我们提供的变换坐标会被添加到结果坐标上,结果就是将对角线移动到了新的位置上。
  5. 应用平移后就可以使用普通的绘制操作来画对角线了。
  6. 在这条线勾画出来以后,调用stroke将其显示在canvas上
  7. 恢复context值原始专题,这样后续的canvas操作就不会被刚才的平移操作影响。

执行结果:

虽然新绘制的对角线看着和前面的一模一样,但是这次绘制已经使用了强大的变换功能。下边我们还要来体会变换的强大之处。

文章转载链接:http://www.atguigu.com/jsfx/1769.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
日本网友票选最让人绝望的5位反派BOSS,第一名是90后的童年阴影

日本网友票选最让人绝望的5位反派BOSS,第一名是90后的童年阴影

坠入二次元的海洋
2024-12-02 11:59:54
新华社消息|中俄东线天然气管道全线贯通

新华社消息|中俄东线天然气管道全线贯通

新华社
2024-12-03 09:45:13
80万的房子,沈先生69万就买了,却被朋友告知:这房子有3个问题

80万的房子,沈先生69万就买了,却被朋友告知:这房子有3个问题

靓仔情感
2024-12-01 07:50:07
妈妈偷偷在校服上绣一根葱,被女儿发上网,网友:感觉自己是废物

妈妈偷偷在校服上绣一根葱,被女儿发上网,网友:感觉自己是废物

晴晴给你讲故事
2024-11-27 17:07:22
一夫一妻制将消亡?2025年后,这3种婚恋模式,将席卷中国各地

一夫一妻制将消亡?2025年后,这3种婚恋模式,将席卷中国各地

巢客HOME
2024-12-02 19:13:21
全球首个不限癌种天价抗癌药拉罗替尼纳入医保,横扫25类癌种!

全球首个不限癌种天价抗癌药拉罗替尼纳入医保,横扫25类癌种!

荷兰豆爱健康
2024-12-02 14:34:16
国务院国资委、国家发改委:支持国有资本运营公司等符合条件的企业发起设立创业投资母基金

国务院国资委、国家发改委:支持国有资本运营公司等符合条件的企业发起设立创业投资母基金

澎湃新闻
2024-12-02 16:47:12
一点基因没浪费!沈月高颜值亮相,五官长相和邱淑贞如粘贴复制

一点基因没浪费!沈月高颜值亮相,五官长相和邱淑贞如粘贴复制

娱乐圈十三太保
2024-12-02 16:50:47
做了五年的医药代表,她讲述那些无奈和艰辛,付出的不仅仅是身体

做了五年的医药代表,她讲述那些无奈和艰辛,付出的不仅仅是身体

吴学华看天下
2023-11-14 10:54:41
快船险胜掘金:哈登39+9+11破3000三分 约基奇28+14+11

快船险胜掘金:哈登39+9+11破3000三分 约基奇28+14+11

醉卧浮生
2024-12-02 13:28:18
马龙:哈登为快船的进攻做了所有关键的决定 他能通过组织击败你

马龙:哈登为快船的进攻做了所有关键的决定 他能通过组织击败你

直播吧
2024-12-03 00:06:07
超级中学作息曝光, 刺痛多少人:我们低估这代孩子的辛苦, 他们是最可怜的一群人

超级中学作息曝光, 刺痛多少人:我们低估这代孩子的辛苦, 他们是最可怜的一群人

蓝橡树
2024-11-25 07:36:03
被恒大坑苦的几大装修老板,只有他提前醒悟,落袋14.6亿安全离场

被恒大坑苦的几大装修老板,只有他提前醒悟,落袋14.6亿安全离场

校长侃财
2024-12-01 11:06:25
史诗级降雨将澳大利亚内陆变成巨大的湿地网络

史诗级降雨将澳大利亚内陆变成巨大的湿地网络

cnBeta.COM
2024-12-01 19:28:07
7换1报价森林狼?爱德华兹才是火箭的终极答案!

7换1报价森林狼?爱德华兹才是火箭的终极答案!

田先生篮球
2024-12-02 22:13:44
离岸人民币兑美元跌破7.30关口

离岸人民币兑美元跌破7.30关口

每日经济新闻
2024-12-03 09:39:07
证监会降温股市!12月3日,周二的四大消息正式传来!

证监会降温股市!12月3日,周二的四大消息正式传来!

风口招财猪
2024-12-03 01:50:03
哪吒汽车CEO张勇已离职?官方回应:并未离职,公司一切正常

哪吒汽车CEO张勇已离职?官方回应:并未离职,公司一切正常

每日经济新闻
2024-12-02 19:13:03
张雪峰:如果你不好好学习,一旦掉入社会底层.....

张雪峰:如果你不好好学习,一旦掉入社会底层.....

华人星光
2024-11-15 12:36:37
政府发文,工资要全面上涨了?你能涨多少?

政府发文,工资要全面上涨了?你能涨多少?

巢客HOME
2024-12-03 05:50:03
2024-12-03 12:03:00

科技要闻

英特尔CEO基辛格“下课”,立即生效!

头条要闻

山西孝义一政府工程项目投资2.83亿 设计费就超500万

头条要闻

山西孝义一政府工程项目投资2.83亿 设计费就超500万

体育要闻

二轮秀场均20+ 他硬生生练成了CBA最强

娱乐要闻

王宝强被指忽悠小演员签“卖身契”

财经要闻

刘世锦:扩大消费需求要找准重点或痛点

汽车要闻

迎来拐点,阿维塔其实早就明牌了

态度原创

艺术
房产
健康
教育
军事航空

艺术要闻

故宫珍藏的墨迹《十七帖》,比拓本更精良,这才是地道的魏晋写法

房产要闻

海口楼市开启大反攻!10盘爆卖千套,11月销量榜曝光!

花18万治疗阿尔茨海默病,值不值?

教育要闻

如果初二基础差,初三你就别想轻松了

军事要闻

古特雷斯就叙利亚局势发表声明

无障碍浏览 进入关怀版