微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

画布的drawImage不执行亚像素渲染/抗锯齿的技术原因是吗?

如何解决画布的drawImage不执行亚像素渲染/抗锯齿的技术原因是吗?

| Ttl; dr: 我需要在
canvas
中非常缓慢地移动图像,而没有明显的逐像素移动。我需要某种抗锯齿功能。 最近,我的任务是在网页中水平绘制一些“云”图形的动画。 足够容易的是,我只是将图像放入DOM中,并使用CSS3转换和对jQuery动画的后备支持,用于尚不支持CSS转换的浏览器。 一切看起来都不错。我的云层在页面上平滑移动。 然后,我不断收到设计师的要求,以减慢运动速度。 由于浏览器不对DOM对象进行亚像素渲染,因此动画似乎以6 FPS的速度运行。 因此,我将图像拍到画布上进行一些快速测试,发现它也不会自动进行亚像素渲染。 我的快速画布动画演示(它无法准确计时运动的时间,请处理它。:-p)     

解决方法

        对于较旧的浏览器,可以设置精灵动画。创建图像的大约4个版本,每个版本从上一个版本向左移动0.25像素。将它们粘贴到一个精灵中,然后对背景位置进行动画处理。
function moveClouds(n)
{
    var v = (n % 4) * 417;
    var h = Math.ceil(n / 4);
    clouds.style.backgroundPosition = h + \" \" + v;
}
    ,        如http://code.google.com/p/chromium/issues/detail?id=7508所述,这是一个已知的Chrome问题。 仍然没有解决方案或解决方法。     ,        您可以在此处进行修改,但是非常难看。 您将canvas元素的分辨率设置为高于实际显示大小,然后您的翻译将被浏览器抗锯齿。 Tada,镀铬亚像素动画!     ,        我已经对您的代码示例进行了一些尝试,在我看来,缓慢的滚动看起来非常流畅:
ctx.drawImage(img,left -= 0.0025,633,417);    
我使用的浏览器是Mac上的Chrome浏览器。     ,        据我了解...没有做太多的浏览器抗锯齿测试。当drawImage(img1,x,y,width,height)x或y不是整数时,它会启动。并在画布标签width = \“ 600 \” height = \“ 600 \”大于style =“ \ width:600; height:600 \”时启动 将样式设置为画布大小的1/2可能会强制消除锯齿。上次我研究了这个主题。我不认为浏览器会将标准实施为100%。 绿屏录像的注意事项抗锯齿对于消除伪影很重要。 更新:在您的示例中,我没有使用chrome进行抗锯齿,而使用Firefox。 这两个浏览器的最新版本都适用于Win XP。在您的示例中,Firefox fps非常慢。 另一个更新 将画布样式大小设置为画布大小的1/3 [1个屏幕像素需要3个画布像素]确实可以使子像素渲染正常工作...但是以这种方式实现效果可能会很大。
Sub-pixel canvas test.<br/>
<canvas id=\"canvas\" width=\"317\" height=\"351\" 
style=\"border:solid 1px  #000; width:100px; height:100px\"></canvas>
抱歉,您实际上没有想要的答案。     ,        我测试的所有浏览器都在画布中支持抗锯齿功能,只需将图像放在非整数坐标上即可查看情况。但是没有子像素渲染(为清楚起见,即使用LCD对红色,绿色,蓝色子像素进行排序以增强水平分辨率,这对于文本来说非常有用。) 根据html5预标准,由浏览器决定是否要进行抗锯齿。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?