高清屏下canvas重置尺寸引发的问题的解决

来源:脚本之家  责任编辑:小易  

只有内嵌css有效,外部css会出现拉伸的情况, 所以有两种方案 var myCanvas = ""; document.body.insertAdjacentHTML("beforeEnd", myCanvas); 或者这种做法 var myCanvas = document.createElement("canvas"); myCanvas.setAttribute("width",

我们知道,清空canvas画布内容有以下两个方法。

当然画布大小

第一种方法是cearRect函数:

改完canvas的属性 widht、height之後 你得需重绘画面(render) 如果用复制的,画面会照先前的比例 假如原本大小 400 x 400 放大1000 x 1000 你复制的画面就会只有一小块 如果是要连画面一起拉伸, 1.直接改变canvas的样式就行 2.算好缩放比例,把

context.cearRect(0,0,canvas.width,canvas.height)

//函数clea修改下,加一句话就行//canvas会记录你moveTo的点,所以清空的时候要用beginPath来清空下路径function clea(){ pic.beginPath(); pic.clearRect(0,0,500,500);}

第二种方法就是用原值重新设置一下canvas的宽(或者高)

布局问题,默认是加在中间会全部铺满的 class LayoutTest { LayoutTest() { init(); } void init() { JFrame frame = new JFrame(); JPanel epanel = new JPanel(); JPanel spanel = new JPanel(); JPanel wpanel = new JPanel(); JPanel npanel

canvas.width = canvas.width // or canvas.height = canvas.height

荣耀手机也是华为的手机,华为手机可以有线和无线连接投影仪,有线简单,这里不多说了。我主要介绍一下荣耀手机无线连接投影仪。为了更清晰,我以美高G2max手机投影仪为例,介绍一下荣耀手机如何连接投影仪。1.美高G2max投影机界面点击“Miracast同屏镜像连接”进入投屏界面.(如下图)1.华为手机从上往下滑动,并选择“开关”进入快捷开关界面(如下图)3.在快捷开关界面点击“多屏互动”(如下图)4.点击搜索到的信号连接,完成同屏镜像(如下图)美高多款手机都可以连接华为荣耀手机。

第二种方法可以起作用,是因为canvas的一个特点:

APP我不知道,但是网站我知道一部分,下面推荐一个网站吧,名字叫做电影天堂。你先看第一张图片,确认它有。以下是详细操作:1.搜索电影天堂2.点击红方框3.搜索你想看的影视剧4.或者往下拉,你会看到欧美剧5.以权利的游戏为例,点击权利的游戏6.往下拉,你会看到每一集的链接7.右键单击链接,选择使用迅雷下载,再设置电影存储位置,就好。8.如何下载迅雷?搜索迅雷,直接下载安装就行,尽量不要装在C盘。下面这个图片就是迅雷标志。9.注意,每个网站的资源不一样,很多情况这个网站不能看的自愿,其他网站可以看;其他网站不能看的资源,这个网站可以看。所以,要多收藏几个网站会更好。如果有需要,可以私信或者评论,我

每当画布的高度或宽度被重设时,画布内容就会被清空。相关内容可以参考 https://www.w3school.com.cn/html5/att_canvas_width.asp

谢悟空邀。孩子学说话时,究竟是先教方言还是普通话,这个问题,恐怕困扰着初为父母的很多人。确实,语言学习的最佳时期是在孩子两三岁的时候,错过了以后学会更困难。有专家提议先学普通话,认为这有助于孩子说普通话不带方言的影响。但笔者认为应因人而异。如果有计划让孩子以后从事播音员等需要运用普通话的职业,那么越快学普通话越好。如果没这个打算,那么就先学方言吧。1、方言是一种传统文化的传承。多元的语言文化会让世界更精彩,语言不单是交流的语言,也保存着很多文化基因的密码。举个简单的例子,在格律诗和词的创作中,经常要用到平仄,但用普通话是很难准确区分的,而用粤语或潮州话就很容易辨别入声。2.方言也是亲情的纽带。

在一个可视化项目中,我们发现在一些电脑上面总是会出现效果错乱的情况。

装修新房,做老百姓做得起的电视墙今天给大家送一系列造价比较低,容易实现的,老百姓家里做得起的电视墙。▲很明显是用石膏板后砌的电视墙,直接放简易电视柜,上方掏个造型,放个灯管即可,旁边是做的隐形门,白色和石膏板白色明显不一样,是混油做法,镶嵌玻璃条即可▲看起来复杂其实很简单,白色的是文化石或者仿文化石的壁纸,墙体材质取决于贴什么东西。如果想要文化石就得用砖砌墙了;贴壁纸的话就可以用石膏板砌墙了,木质封边即可▲新中式的,木质线条收框,中间壁纸即可。两边一定要装饰中式元素的饰品▲就是一个白墙上下各放上木板,上方木板放装饰品,下方充当电视柜;中间两边用文化石铺贴成锯齿状即可,或者直接用仿文化石壁纸铺贴

经过调试,我们发现,原来是“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,因而导致绘制效果错乱。

 

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

canvas 自适应屏幕的问题,能否铺满整个屏幕,并且画布不是等比例放大?

  • 能。具体参考以下方法:

  1. 直接设置canvas的style。width:100%;height:100%试试。

    <canvas width="100" height="100" style="background-color: #ff0000;width:100%;height:100%;"></canvas>。

  2. 可以用JS监控屏幕大小,然后调整Canvas的大小。在代码中加入JS

    $(window).resize(resizeCanvas);

    function resizeCanvas()

    {canvas.attr("width", $(window).get(0).innerWidth);

    canvas.attr("height", $(window).get(0).innerHeight);

    context.fillRect(0, 0, canvas.width(), canvas.height());};

    resizeCanvas();

    就可以了。

    <canvas> 标签只是图形容器,您必须使用脚本来绘制图形。

  • Canvas 对象表示一个 HTML 画布元素 -<canvas>。它没有自己的行为,但是定义了一个 API 支持脚本化客户端绘图操作。

  • 你可以直接在该对象上指定宽度和高度,但是,其大多数功能都可以通过CanvasRenderingContext2D 对象获得。 这是通过 Canvas 对象的getContext() 方法并且把直接量字符串 "2d" 作为唯一的参数传递给它而获得的。

  • <canvas> 标记在 Safari 1.3 中引入,在制作此参考页时,它在 Firefox 1.5 和 Opera 9 中也得到了支持。在 IE 中,<canvas> 标记及其 API 可以使用位于excanvas点sourceforge点net的 ExplorerCanvas 开源项目来模拟。

  • 提示:如果希望学习如何使用 <canvas> 来绘制图形,可以访问 Mozilla 提供的Canvas 教程(英文)以及相应的中文 Canvas 教程。

本回答被网友采纳

HTML5 canvas 画图, 大图缩小时清晰度问题

这是因为图像的采样方式不够好造成的

解决方案是自己写算法进行平均采样

实现方式有两种,一种是js对像素点进行手动合并采样,具体算法可以用这个:github。com斜杠sapics斜杠scale.js

还有一个方案使用webgl,用gpu对图片进行平均合并采样,需要自己写shader,并且需要比较新的浏览器和电脑,需要支持webgl,运行效率比较高。

如何控制canvas自适应屏幕,可以根据屏幕的尺寸,适应现实

可以用JS监控屏幕大小,然后调整Canvas的大小。在代码中加入JS

1

2

3

4

5

6

7

$(window).resize(resizeCanvas);

function resizeCanvas() {

canvas.attr("width", $(window).<a href="https://www.baidu.com/s?wd=get&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4P1NWPyD4m1I-mWb1njw90ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHmvrHcLPWnYn1n4njcznjT3Ps" target="_blank" class="baidu-highlight">get</a>(0).innerWidth);

canvas.attr("height", $(window).<a href="https://www.baidu.com/s?wd=get&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y4P1NWPyD4m1I-mWb1njw90ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHmvrHcLPWnYn1n4njcznjT3Ps" target="_blank" class="baidu-highlight">get</a>(0).innerHeight);

context.fillRect(0, 0, canvas.width(), canvas.height());

};

resizeCanvas();

就可以了。

为什么我修改不了canvas画布大小

在Html页面上加入canvas元素(不能使用js动态加入canvas)。

通过Html设置画布大小。可以直接在Html页面上设置Canvas元素的大小:

<canvas id="testCanvas" width="200" height="100"></canvas>

也可以通过js设置画布大小:

var canvas = document.getElementById("testCanvas");

canvas.width = 200;

canvas.height = 100;

这两种方法都可以。

需要注意的是,设置画布大小后,画布所有的样式和内容会重置(如画布上的图形会消失,在设置画布大小后需要重新绘制)。

示例

首先我们创建一个宽度为200px,高度为100px的画布,它的边框为红色。然后在中间画一个大小为20*20的正方形:

代码

复制代码

<!DOCTYPE html>

<html>

<head>

<title></title>

</head>

<body>

<canvas id="testCanvas"></canvas>

<script>

var canvas, context;

canvas = document.getElementById("testCanvas");

canvas.width = 200;

canvas.height = 100;

canvas.style.border = "1px solid red";

context = canvas.getContext("2d");

context.strokeStyle = "#99cc33";

context.fillRect(90, 40, 20, 20);

</script>

</body>

</html>

复制代码

将画布大小缩小1倍

使用css设置画布大小

相关代码

canvas.style.width = "100px";

canvas.style.height = "50px";

效果

分析

我们发现画布是整体按比例缩小了1倍。

使用js设置画布大小

相关代码

复制代码

canvas.width = 100;

canvas.height = 50;

//设置画布大小后,所有样式会重置。因此需要重新绘制正方形

context.fillRect(90, 40, 20, 20);

复制代码

效果

分析

相当于把画布的右半部和下半部去掉了,达到了我们预期的效果。

html5 Canvas 如何自适应屏幕大小?

可以用JS监控屏幕大小,然后调整Canvas的大小。在代码中加入JS

$(window).resize(resizeCanvas);

 function resizeCanvas() {

        canvas.attr("width", $(window).get(0).innerWidth);

        canvas.attr("height", $(window).get(0).innerHeight);

        context.fillRect(0, 0, canvas.width(), canvas.height());

 };

 resizeCanvas();

就可以了。

<canvas> 标签只是图形容器,您必须使用脚本来绘制图形。


  • 本文相关:
  • 浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
  • html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
  • canvas 自适应屏幕的问题,能否铺满整个屏幕,并且...
  • HTML5 canvas 画图, 大图缩小时清晰度问题
  • 如何控制canvas自适应屏幕,可以根据屏幕的尺寸,...
  • 为什么我修改不了canvas画布大小
  • html5 Canvas 如何自适应屏幕大小?
  • html5 Canvas 如何自适应屏幕大小
  • css设置canvas画布尺寸与width和height设置的区别
  • 如何动态改变canvas 的大小
  • 关于HTML5清除canvas画布问题
  • JAVA 改变Canvas画布尺寸
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved