百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> html5canvas中绘制字体与图片以及图形依稀题目解决-
分享文章到:

html5canvas中绘制字体与图片以及图形依稀题目解决-

发布时间:08/01 来源:未知 浏览: 关键词:
多涌现在高dpi设施,这意味着每平方英寸有更多的像素,如手机,平板电脑。固然许多高端台式电脑也有高辨论率高dpi的显示器。 html5 canvas 绘制字体、图片与图形依稀题目

产生状况

多涌现在高dpi设施,这意味着每平方英寸有更多的像素,如手机,平板电脑。固然许多高端台式电脑也有高辨论率高dpi的显示器。

canvas在阅读器中的缩放道理

要是没有设定style那么就以html的属性width,height作为尺寸。

要是设定了style中的width、height,那么以其style设定为终究绘制到阅读器的尺寸。

也就是说,属性中的宽高并不代表现实宽高,所以高dpi下会放大canvas,致使依稀。

canvas的width、height属性是canvas的后缓冲尺寸,绘制到阅读器后会依据目前dpi进行缩放。

devicePixelRatio(window成员)保留了在高dpi状态部属性width/height被放大的比例。

差错的解决案例

网上搜寻canvas 依稀,会有两种解决办法,可能此刻都不适合了。

一个是CanvasRenderingContext2D.translate(0.5,0.5);

  这个其实是在3D画图领域常用的,用于处置像素偏移,canvas的2d context已经处置了这方面的题目。

另一个是backingStorePixelRatio,你会看到相似下面这样的代码,这个backingStorePixelRatio已经在新阅读器中被去除了,我试过chrome与edge都已经不存在了。


var ctx = document.createElement("canvas").getContext("2d"),
        dpr = window.devicePixelRatio || 1,
        bsr = ctx.webkitBackingStorePixelRatio ||
              ctx.mozBackingStorePixelRatio ||
              ctx.msBackingStorePixelRatio ||
              ctx.oBackingStorePixelRatio ||
              ctx.backingStorePixelRatio || 1

我在研究时用了动态新建canvas的办法,样式的width/height乘以缩放比devicePixelRatio得到canvas的属性width/height。

  这不是完善的解决方案,由于在阅读器的dpi产生变化时,比方会员设定,或者从一个高dpi显示器挪移窗口到低dpi显示器时产生。(我1080p普通23寸显示器是1.25倍,平板电脑是2.0倍,之间拖放窗口就会产生)

解决办法
1、动态新建并监视window的onresize事件,依据devicePixelRatio重建canvas。
2、动态调整canvas样式的宽高,一样监视onresize事件。再配合CanvasRenderingContext2D.scale动态缩放绘制内容的比例。

阅读器都没有devicePixelRatio转变的事件,或者dpi转变的事件,要是你晓得,请留言。

以上就是html5 canvas中绘制字体与图片以及图形依稀题目解决的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板