iphone - 带有 HTML5 Canvas 和 Retina 显示屏的 UIWebView

标签 iphone html canvas uiwebview retina-display

我的应用有一个提供本地内容的 UIWebView。如果我拍摄视网膜大小的图像并将其用作 body 的背景,我可以使用 CSS -webkit-background-size 属性使其适当缩放。这让我在 iPhone 4 上看到清晰的图像。

但是,HTML5 Canvas 标签并不是那么合作。当我使用 drawImage 命令将相同的视网膜尺寸图像放入 HTML5 Canvas 时,它是巨大的——远远超出了物理屏幕的边界。这是我正在使用的代码:

ctx.drawImage(retinaImage, 0, 0)

如果我尝试在 drawImage 上放置高度和宽度参数,图片会按比例缩小以适合屏幕,但它是 block 状和像素化的。不像 CSS 背景那样清晰。

对于 HTML5 Canvas,我可以使用等同于 CSS -webkit-background-size 属性的技巧吗?

谢谢!

更新:

这是我用来解决这个问题的最终代码。希望它能在将来帮助其他人:

        if (window.devicePixelRatio == 2) {
            myCanvas.setAttribute('height', window.innerHeight * 2);
            myCanvas.setAttribute('width', window.innerWidth * 2);
            ctx.scale(2, 2);
        } else {
            myCanvas.setAttribute('height', window.innerHeight);
            myCanvas.setAttribute('width', window.innerWidth);
        }

最佳答案

查看 http://joubert.posterous.com/crisp-html-5-canvas-text-on-mobile-phones-and .看起来如果您将尺寸乘以 devicePixelRatio 然后按该比例缩放它应该工作。

这是一些对我有用的伪代码。

var ctx = myCanvasElem.getContext("2d");
ctx.attr("width", width * window.devicePixelRatio);
ctx.attr("height", height * window.devicePixelRatio);
ctx.scale(window.devicePixelRatio, window.devicePixelRatio);
ctx.drawImage(img, x, y, width, height);

如果这能为您解决问题,请告诉我!

关于iphone - 带有 HTML5 Canvas 和 Retina 显示屏的 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405710/

相关文章:

html - 如何在 innerText 或 nodeValue 之间进行选择?

java - 使用 Canvas 正确绘制点

iphone - iOS uiwebview 清除触摸事件历史记录

javascript - 如何在 html5 native 视频播放器中添加延迟或偏移以同步 webvtt 字幕?

iphone - 如何将旧的表情符号编码转换为 iOS5 中的最新编码?

javascript - 我如何知道用户正在浏览网页的哪一部分?

android - 带有 PorterDuff.Mode.CLEAR 的橡皮擦总是画一条黑线,我想删除的地方

javascript - 如何防止 HTML Canvas 上的缩小

ios - 如何同时滑动标签文本和图像

iphone - UIScrollView 自动调整内容大小?