【问题标题】:Draw rectangle using coordinates of length edge and width on Html Canvas使用 Html Canvas 上的长边和宽度坐标绘制矩形
【发布时间】:2021-11-15 13:12:18
【问题描述】:

我倾向于使用canvas 对象。我有以下坐标: A: [x1,y1] B: [x2,y2] 和一个width,它是一个数字。我想使用这些信息在画布上绘制一个矩形。我知道输出可以是 AB 两边的两个矩形。 一种方法是找到两条垂直于AB 的线,然后使用width 值从每个点找到另一个BCAD 点。 有没有更好的解决方案? 谢谢

【问题讨论】:

  • 不确定... 您的矩形可以旋转吗?啊..也许我现在变得更好了,[AB] 是一段,而不是对角线,对吧?另外,你能定义“更好”吗?您当前的解决方案有什么问题?
  • @Kaiido 感谢您的评论。是的 AB 是一个细分市场。更好的是,我认为我让事情变得复杂,也许有更简单的方法来做到这一点

标签: javascript html canvas rectangles


【解决方案1】:

如果您知道矩形两端的顶点,则不需要宽度。宽度和高度可以通过减去正方形的顶点来获得。请参考以下代码。

const CANVAS_WIDTH = 400;
const CANVAS_HEIGHT = 300;
const canvas = Object.assign(document.createElement('canvas'), {width: CANVAS_WIDTH, height: CANVAS_HEIGHT});
const ctx = canvas.getContext('2d');

const A = [10, 30];
const B = [120, 250];

const drawRectByCorner = (ctx, corner1, corner2) => {
  const [x1, y1] = corner1;
  const [x2, y2] = corner2;
  ctx.fillRect(x1, y1, x2 - x1, y2 - y1); // x, y, width, height
};

drawRectByCorner(ctx, A, B);

【讨论】:

  • 你好,但我只有一个片段。所以 AB 是边之一。我不确定你的方法是否给出了正确的旋转。我会试试看
  • 我可以要求更多解释吗?你只知道一个角和一个边AB,却不知道上下左右之间是哪条边AB?请使用实际变量值进行说明。
  • 感谢您的帮助。是的,假设我们矩形的顶点是 ABCD,我知道 AB 边以及 A 和 B 的坐标。我也知道 BC 或 AD 的长度。我需要找到 C 和 D 的坐标,我想我可以用它绘制矩形
  • 如果还没有解决,请参考。 Link
  • 谢谢,请问这个方法是否适用于任何旋转角度的矩形?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多