gpt4 book ai didi

javascript - 如何在移动和桌面设备上缩放 Canvas

转载 作者:太空宇宙 更新时间:2023-11-04 08:51:18 25 4
gpt4 key购买 nike

经过一些研究和反复试验,我写了以下条形图:

function extractResults(container) {
var results = [];
for (result of container.children) {
var parts = result.innerText.split("-")
results.push(parseInt(parts[1].trim().split(" ")[0]));
}
return results
}
var results = extractResults($("#results"));
var canvas = $("#chart");
var ctx = canvas.getContext("2d");
var margin = canvas.width * 0.005;
var bWidth = (canvas.width - (margin * results.length)) / results.length;
var max = Math.max.apply( Math, results );
var yScale = canvas.height / max;
var currX = margin;
ctx.font = "20px Arial"
for (i = 0; i < results.length; i++)
{
var bHeight = yScale * results[i];
ctx.fillStyle = "green";
ctx.fillRect(currX, canvas.height - bHeight, bWidth, bHeight);
ctx.fillStyle = "black";
ctx.fillText(i + 1, currX + bWidth / 2, canvas.height - canvas.height * 0.05, bWidth / 2);
currX += bWidth + margin;
}

一切都是根据 Canvas 的高度和宽度计算的,但是我应该如何设置它们呢?什么值在移动和桌面设备上看起来不错。我不使用任何框架,html 如下所示:

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Results - Is this site great? - easypolls</title>

<link rel="shortcut icon" type="image/x-icon" href="/static/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/static/css/style.css" />
<link rel="stylesheet" type="text/css" href="/static/polls/css/polls.css" />
</head>
<body>
<h2><a href="/">easypolls</a></h2><hr />

<h3>Is this site great?</h3>
<p>04-14-2017 8:05 p.m. (UTC)</p>
<canvas id="chart"><p>Graphs are not supported by this browser.</p></canvas>
<ul id="results">

<li>1.Yes. - 3 votes</li>

<li>2.No. - 0 votes</li>

<li>3.It looks awful! - 1 vote</li>

</ul>

<p><label>Share:<input type="text" value="http://127.0.0.1:8000/1/results/" readonly /></label></p>
<p><label>Embed:<input type="text" value="<iframe src=&quot;http://127.0.0.1:8000/1/results/&quot;></iframe>" readonly /></label></p>


<script src="/static/js/shortcuts.js"></script>
<script src="/static/polls/js/results.js"></script>

</body>
</html>

最佳答案

内宽&高

浏览器使用 innerWidth 提供有关浏览器窗口大小的信息。 , innerHeight , outerWidth , outerHeight , screenX , 和 screenY

例如:设置 Canvas 分辨率以匹配浏览器的页面。

canvas.width  = innerWidth;
canvas.height = innerHeight;

注意:所有像素值都是 CSS 像素,可能不是实际的物理像素,例如当客户端缩放页面时,或者显示器是视网膜或非常高分辨率的显示器时。由于双线性过滤,这可能会导致 Canvas 图像质量较低。没有检测视网膜或缩放的标准方法,因此 this answer如果这是一个问题,则给出一个简单的解决方案 this answer给出了更详细的检测视网膜/高分辨率显示器的方法。

窗口.屏幕

您还可以使用 the screen对象以获取有关设备屏幕的信息。

关于javascript - 如何在移动和桌面设备上缩放 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43436661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com