请问canvas内容自适应怎么实现的
canvas的宽度变小,里面的内容也跟着缩放。
难道都是用百分比计算出来的位置?
有没有类似小程序rpx的技术?
图中是百度的echart
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
canvas的宽度变小,里面的内容也跟着缩放。
难道都是用百分比计算出来的位置?
有没有类似小程序rpx的技术?
图中是百度的echart
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
window.onresize的时候重新绘制canvas,echarts也是提供了resize方法的
要不要试一下纯 CSS 的方式?
https://codepen.io/xboxyan/pe...
resize,此api需要手动调用来改变图表大小
在线示例
这个有比较多的方案,比如图像计算中引入一个放缩变量(控制)系数(如果是等比例放缩,这个系数只需要一个,如果允许拉伸,则还需要有scX和scY的区别),这样在resize的处理中,先计算出这个系数,再在所有需要的地方计算则可以很快获取正确的结果。
或者先统一计算,再整个乘上放缩系数来映射放缩都是可以的。
离线 canvas 原始大小
画完了,直接 缩放贴到 目标 canvas
ECharts
是监听了屏幕缩放,然后调用实例的resize
方法调整图像尺寸的;rpx
的屏幕适配是基于屏幕宽度的,在开发中可以使用 px2rem 达到近似的效果。但是
canvas
比较特殊,除了style.width
、style.height
之外,它还有画布本身的width
跟height
属性,而屏幕适配只能修改style.xxx
,画布的内容则是等比缩放的,缩放倍数略大一点,就会导致图像出现锯齿或者边缘变糊。虽然
canvas
呈现的是位图,但不妨碍人们为它封装矢量图绘制接口,如果因为缩放而影响画质的话就失去了矢量图绘制的优点了。所以最好的方法是像
ECharts
那样,封装一个缩放的方法,跟随屏幕缩放。再次一点的方案,可以把
canvas
的width
、height
设为尺寸变化范围的最大值,因为图像缩小带来的不良效果通常要轻微一些(拟合通常比插值靠谱)。