Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用画布元素作为图像的缓冲区更有利还是使用img元素作为缓冲区更有利?_Javascript_Html_Canvas - Fatal编程技术网

Javascript 使用画布元素作为图像的缓冲区更有利还是使用img元素作为缓冲区更有利?

Javascript 使用画布元素作为图像的缓冲区更有利还是使用img元素作为缓冲区更有利?,javascript,html,canvas,Javascript,Html,Canvas,我想用画布上的图像制作大量动画;使用canvas元素作为图像的缓冲区更有利(这样我们就不必再次调整大小),还是使用img元素作为缓冲区更有利 或者,如果性能是我应该做的最重要的事情,而我却错过了,那么有没有更好的方法,一个必须做的事情 另外,为什么“清除”画布的操作如此缓慢?我的背景是WindowsPhone7的xna编程,“清除”整个屏幕是最快的操作之一 另外,我应该通过设置width=width来“清除”画布,还是应该执行drawRect(0,0,width,height)?您应该使用画布元

我想用画布上的图像制作大量动画;使用canvas元素作为图像的缓冲区更有利(这样我们就不必再次调整大小),还是使用img元素作为缓冲区更有利

或者,如果性能是我应该做的最重要的事情,而我却错过了,那么有没有更好的方法,一个必须做的事情

另外,为什么“清除”画布的操作如此缓慢?我的背景是WindowsPhone7的xna编程,“清除”整个屏幕是最快的操作之一


另外,我应该通过设置width=width来“清除”画布,还是应该执行drawRect(0,0,width,height)

您应该使用画布元素作为转换图像的缓冲区,并在整数坐标上对齐drawImage调用。一旦需要变换图像,软件画布实现就会变慢(因为变换=重采样=慢)

见:


清理画布时,使用clearRect:

查看高度和宽度,请参见等待。您的意思是说,与
drawImage(img)
相比,执行
drawImage(c)
的速度更快吗?(因为测试证明并非如此。)我的意思是,如果你有一个正在绘制的变换图像(比如旋转或缩放等),你应该将变换后的版本缓存到画布中,以获得最佳性能。ok,酷,但对于我从url加载的普通图像。。我应该把它加载到画布中,然后
DrawImage(c)
还是应该简单地
DrawImage(img)
?我想现在我应该简单地使用DrawImage(img)。Chrome以前在drawImage(img)上有一个问题,它使用的重采样算法比drawImage(canvas)更昂贵,但我认为现在已经解决了。当然是YMMV了。@iimariheikkinen。好的,那么你想说的是,如果有疑问,请选择
drawImage(canvas)
,因为绝对100%的速度,即使不是更快,它也永远不会变慢。对吗?