首页 > 作文

在canvas上实现元素图片镜像翻转动画效果的方法

更新时间:2023-04-06 10:37:16 阅读: 评论:0

一、canvas图片水平镜像翻转效果预览

您可以狠狠的点击这里:

demo页面中点击图片动画效果可见。

二、canvas上实现图片镜像翻转的实现

css中要想实现元素的翻转效果,比较简单,例如我们希望某一张图片水平镜像翻转,只需要一行css就可以了:

img {    transform: scalex(-1);}

或《小儿垂钓》古诗者:

img {    transform: scale(-1, 1);}

但是在canvas中,则要麻烦一些,麻烦的并不是无法翻转,而是坐标系的定位。

在canvas中,如下代码可以实现资源的水平镜像翻转(假设 context 是canvas的 2d 上下文):

context.scale(-1, 1);

或者使用 ttransform api直接矩阵变换:

context.ttransform(-1, 0, 0, 1, 0, 0);

然而,翻转虽然实现了,但是canvas中元素定位就出了很大的问题。这是因为canvas的坐标变换系和css不一样,因此,如果我们想实现居中翻转效果,需要在翻转之前将目标元素的中心点移动到变换轴上。

拿水平翻转距离,在 scale 之前先 translate 位移变换后的水平偏移,然后就能看到一直居中翻转的效果了。

语言苍白,拿图示意一下。

canvas默认的变化坐标系是左上角。

因此,如果水平 scale 为 1 , 0.5 , 0 , -0.5 , -1 时候的最终位置如下图示意:

于是可以得到应当偏移的水平距离公式:

distance = (canvas.width – image.width * scale) / 2;

于是,最终镜像绘制图片的关键代码变成这样(假设水平缩放大小是 scale ):

// 坐标参考调整context.translate((canvas.width - image.width * scale) / 2, 0);con西直门立交text.scale(scale, 1);context.drawimage(image, 0, 0);// 坐标参考还原context.ttransform(1, 0, 0, 1, 0, 0);

如何增加动画效果呢?

我们可以借助tween.js ,

里面有各种缓动算法,借助方便调用的 math.animation() 方法,就能轻松实现我们想要的效果啦!

math.animation(form, to, duration, easing, callback);

动画js如下:

var canvas = document.querylector('canvas');var context = canvas.getcontext('2d');// 动画进行math.animation(1, -1, 600, 'quad.eainout', function (value, inding) {    // 清除画布内容    context.clearrect(0, 0, canvas.width, canvas.h家和万事兴繁体字eight);    // 调整坐标    context.translate((canvas.width - canvas.width * value) /卡迪夫大学世界排名 2, 0);    // 调整缩放    context.scale(value, 1);    // 绘制此时图片    context.drawimage(eleimg, 0, 0);    // 坐标参考还原    context.ttransform(1, 0, 0, 1, 0, 0);});

三、结束语

又是一篇冷文,canvas这东西,玩的前端并不多,受众有限,不比流行技术。然,古语有云,不以善小而不为,希望以后有小伙伴搜索到相关问题的时候可以提供帮助。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。函数的间断点

本文发布于:2023-04-06 10:37:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/c901a8bb47c919d24b41cec9bd6a3bd6.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:在canvas上实现元素图片镜像翻转动画效果的方法.doc

本文 PDF 下载地址:在canvas上实现元素图片镜像翻转动画效果的方法.pdf

标签:水平   镜像   效果   坐标
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图