使用PhoneGap实现Canvas绘图
我们在使用Canvas时遇到了一个问题,那就是Canvas需要特定的像素尺寸。虽然iPhone 4的视网膜显示屏从CSS/Webkit的角度来看仍然是320像素宽,但技术上实际上有640个屏幕像素。
有没有办法在Webkit上支持视网膜显示屏,并且与非视网膜显示器兼容呢?
我们在使用Canvas时遇到了一个问题,那就是Canvas需要特定的像素尺寸。虽然iPhone 4的视网膜显示屏从CSS/Webkit的角度来看仍然是320像素宽,但技术上实际上有640个屏幕像素。
有没有办法在Webkit上支持视网膜显示屏,并且与非视网膜显示器兼容呢?
上周我遇到了同样的问题,并发现了如何解决它 -
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
if (window.devicePixelRatio > 1) {
var canvasWidth = canvas.width;
var canvasHeight = canvas.height;
canvas.width = canvasWidth * window.devicePixelRatio;
canvas.height = canvasHeight * window.devicePixelRatio;
canvas.style.width = canvasWidth + "px";
canvas.style.height = canvasHeight + "px";
ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
}
canvas.style.width = canvasWidth + "px"
和canvas.style.height
设置为相同的方式才能让它正常工作。我已经向问题提交了修改建议。 - wxs<meta name='viewport' content='width=device-width' />
canvas.width = innerWidth
canvas.height = innerHeight
canvas.style.width = innerWidth+'px'
canvas.style.height = innerHeight+'px'
WebCode(http://www.webcodeapp.com)是一款矢量绘图应用程序,可以为您生成JavaScript HTML5 Canvas代码。该代码支持Retina显示屏,您可以查看它们的实现方式。
编辑:刚注意到我发布了错误的演示链接!
视网膜(或其他高分辨率显示器)画布分辨率绝对是可能的。这里有一个可行的示例:
http://spencer-evans.com/share/github/canvas-resizer/
我也遇到过这个问题。被接受的答案代码基本上是正确的,但你也可以使用库解决方案。我编写了一个库来处理智能画布重新调整大小,使元素更具响应性和更高的分辨率(如演示所示)。