我们知道,清空canvas画布内容有以下两个方法。
第一种方法是cearRect函数:
context.cearRect(0,0,canvas.width,canvas.height)
第二种方法就是用原值重新设置一下canvas的宽(或者高)
canvas.width = canvas.width // or canvas.height = canvas.height
第二种方法可以起作用,是因为canvas的一个特点:
每当画布的高度或宽度被重设时,画布内容就会被清空。相关内容可以参考 https://www.w3school.com.cn/html5/att_canvas_width.asp
在一个可视化项目中,我们发现在一些电脑上面总是会出现效果错乱的情况。
经过调试,我们发现,原来是“canvas.width = canvas.width”惹的祸。普通屏幕下面下不会有问题,但是如果屏幕是高清屏,就会出现问题。这是因为,高清屏下,我们为了处理绘制图形模糊的问题,通常会做如下处理:
function setupCanvas(canvas) { let width = canvas.width, height = canvas.height, dpr = window.devicePixelRatio || 1.0; if (dpr != 1.0 ) { canvas.style.width = width + "px"; canvas.style.height = height + "px"; canvas.height = height * dpr; canvas.width = width * dpr; ctx.scale(dpr, dpr); } }
我们知道,高清屏下window.devicePixelRatio都大于1。所以在绘图之前画笔会被缩放:
ctx.scale(dpr, dpr);
我们知道cavnas是基于状态的绘图组件。 其中缩放比例值也在状态管理之中。 当我们重新设置canvas的宽(高也一样)的时候,不仅会清空canvas的画布内容,同时还会把绘图状态重置到最原始的状态,原始状态下画笔的缩放比例是1,缩放比例值会被重置为1,因而导致绘制效果错乱。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
因为IOS最新版微信取消了浮窗功能,小程序后台狠毒用户反馈进入不方便了,目前公...
弄了半个晚上的时间,总算马马虎虎搞好了博客的样式。 整个博客是蓝色的基调,比...
各位小伙伴们好,今天我们来聊一聊JavaScript 中的“类型系统”。 但是在开始之...
4月13日凌晨,NVIDIA创始人兼首席执行官黄仁勋又一次在自家厨房「举办」了一年一...
1.人生就像蒲公英,看似自由,却身不由己。 2.离开我就别安慰我,要知道每一次...
简介: 世界免疫周丨后疫情时代,医院如何变得更有智慧 最近几天,印度成为了全...
性能真的很重要吗? 性能很重要,这个大家都知道。为什么我们还要做出速度很慢的...
1.float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在...
1,需要在项目种引入钉钉官方的js script type=text/javascript src=http://g.ali...
前言 暗黑模式这个概念最早起源于 MacOS系统 的 Mojave ,提供 浅色主题 和 深色...