首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >画布的drawImage()不进行亚像素渲染/反别名有技术原因吗?

画布的drawImage()不进行亚像素渲染/反别名有技术原因吗?
EN

Stack Overflow用户
提问于 2011-06-14 21:22:48
回答 6查看 3K关注 0票数 6

Ttl;dr:,我需要在中缓慢地移动一幅图像,而不需要一个像素一个像素的移动。我需要一些防混叠。

最近,我的任务是在一个网页中水平地动画一些“云”画。

很容易,我就将图像放入DOM中,并使用CSS3转换,并将其作为jQuery动画的后盾,用于那些还不支持jQuery转换的浏览器。

一切看起来都很好。我看到一些云彩平稳地在页面上移动。

然后,我不断收到设计师的请求,要求减缓down...way的移动速度。

因为浏览器不对DOM对象进行亚像素渲染,所以动画似乎运行在6个FPS。

所以,我把图像拍到画布上进行一些快速测试,并发现它也不会自动进行亚像素渲染。

我的快速画布动画演示 (它不能准确地计时移动,处理它)。-p)

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-14 23:31:07

对于较旧的浏览器,您可以用动画制作精灵。创建可能的4个版本的图像,每个移动0.25px从前一个左。将它们粘贴在一个精灵中,然后将背景位置动画化.

代码语言:javascript
复制
function moveClouds(n)
{
    var v = (n % 4) * 417;
    var h = Math.ceil(n / 4);
    clouds.style.backgroundPosition = h + " " + v;
}
票数 5
EN

Stack Overflow用户

发布于 2011-06-14 23:16:20

这是一个已知的Chrome问题,正如http://code.google.com/p/chromium/issues/detail?id=7508所记录的那样

仍然没有决心或解决办法。

票数 2
EN

Stack Overflow用户

发布于 2011-07-25 12:53:59

你可以在这里做一个黑客,但它很丑。

将画布元素的分辨率设置为高于实际显示大小,然后浏览器对翻译进行反别名。达达,亚像素的铬动画!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6350340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档