javascript - 将 Canvas 形状大小设置为 Canvas 的百分比

标签 javascript html canvas

我在这里看到了几个问题,询问如何设置 Canvas 相对于其所在窗口的大小:

  1. Resize HTML5 canvas to fit window
  2. Relatively sizing HTML Canvas

我想知道的是我是否可以在 Canvas 内相对于尺寸设置形状(即 rect )。例如:

canvas.style.width = 100;
canvas.style.height = 30;

canvasContext.fillRect(0, 0, "100%", "80%");

我尝试设置 rect以与 Canvas 大小相同的像素为单位,认为它仍然相对于窗口,但结果并非如此。
相反,如果我设置 canvasContext.fillRect(0, 0, 100, 30); ,它将相对于 Canvas 。

编辑:

在这里我认识到了自己的错误和愚蠢。当尝试设置width时矩形与 Canvas 宽度的关系,我使用 canvas.style.width而不是“canvas.width”。我似乎暂时忘记了基本的 HTML...

最佳答案

是什么阻止您在绘制时简单地访问 Canvas 宽度?

var canvas = document.getElementById("canvas");
var canvasContext = canvas.getContext("2d");
canvas.width = 100;
canvas.height = 30;


function draw(color) {
  canvasContext.clearRect(0, 0, canvas.width, canvas.heigh);
  canvasContext.fillStyle = color;
  canvasContext.fillRect(0, 0, canvas.width, canvas.height * 0.5);
}
draw("#FF0000");

setTimeout(function() {
  canvas.height *= 2;
  draw("#00FF00");
}, 1000);

setTimeout(function() {
  canvas.height *= 2;
  draw("#0000FF");
}, 2000);
<canvas id="canvas" style="border: 1px solid black"></canvas>

关于javascript - 将 Canvas 形状大小设置为 Canvas 的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40784309/

相关文章:

javascript - ES6 数组解构怪异

html - 如何使用 twbs :bootstrap in Meteor 将超大屏幕中的所有内容居中

html - 字体在网络服务器上不工作

javascript - 特定方向上经过 3 点的圆弧

javascript - 如何使用 HTML5 canvas 绘制 donut

wpf - 当使用 ItemsControl ItemsControl.ItemsPanel 设置为 Canvas 时,ContenPresenter 会出现并破坏子项上的 Canvas 属性 [WPF]

javascript - 使用 JavaScript 在 Page_Load 上启动 Modal 不起作用 - ASP.NET

javascript - angularFire 3 路数据绑定(bind)不会更新函数

javascript - d3 v4 从 CSV 堆叠到分组条形图

javascript - 选择 Div 标题文本并使用 Jquery 制作数组