我怎样才能用 canvas 画一条线到显示中的特定坐标...(绝对坐标)
How can i draw a line with canvas to specific Coordinates in display... (absolute cordinate)
我是 canvas 和 svg 的新手。我想在特定坐标之间制作一条 canvas 或 svg 线
例如,我有两个矩形,我必须在它们之间画一条线(在这种情况下,我必须使这条线成为两个矩形的中心)
我尝试过的:
像这样的 SVG 代码:
HTML:
<svg version="1.1" id="line_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100%" height="15px" xml:space="preserve">
<path class="path2" fill="#01a09e" stroke-width="5" stroke="#01a09e" d="M0 0 l890 0"/>
</svg>
CSS:
.path2 {
stroke-dasharray: 1120;
/* stroke-dashoffset: 800; */
animation: draw1 5s linear alternate;
}
@keyframes draw1 {
from {
stroke-dashoffset: 1120;
}
to {
stroke-dashoffset: 2240;
}
}
您只需使用 canvas 即可实现。我用 quadraticCurveTo()
画曲线,用 rect()
画矩形。
quadraticCurveTo()
需要一个起点,这就是为什么我在画线之前使用 moveTo()
。
const canvas = document.querySelector("canvas"),
ctx = canvas.getContext("2d");
// Draw rectangle one ("r" stands for rectangle)
let r_x = 20,
r_y = 20,
r_width = 80,
r_height = 30;
ctx.beginPath();
ctx.rect(r_x, r_y, r_width, r_height);
// Draw curved line
let start_x = r_x + r_width*2/3,
start_y = r_y + r_height,
point_one = { x: 30, y: 130 },
point_two = { x: 120, y: 150 };
ctx.moveTo(start_x, start_y)
ctx.quadraticCurveTo(
point_one.x,
point_one.y,
point_two.x,
point_two.y
);
// Draw second rectangle
r_x = 80, r_y = 150;
ctx.rect(r_x, r_y, r_width, r_height);
ctx.stroke();
<canvas width="300" height="200"></canvas>
我是 canvas 和 svg 的新手。我想在特定坐标之间制作一条 canvas 或 svg 线
例如,我有两个矩形,我必须在它们之间画一条线(在这种情况下,我必须使这条线成为两个矩形的中心)
我尝试过的: 像这样的 SVG 代码:
HTML:
<svg version="1.1" id="line_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100%" height="15px" xml:space="preserve">
<path class="path2" fill="#01a09e" stroke-width="5" stroke="#01a09e" d="M0 0 l890 0"/>
</svg>
CSS:
.path2 {
stroke-dasharray: 1120;
/* stroke-dashoffset: 800; */
animation: draw1 5s linear alternate;
}
@keyframes draw1 {
from {
stroke-dashoffset: 1120;
}
to {
stroke-dashoffset: 2240;
}
}
您只需使用 canvas 即可实现。我用 quadraticCurveTo()
画曲线,用 rect()
画矩形。
quadraticCurveTo()
需要一个起点,这就是为什么我在画线之前使用 moveTo()
。
const canvas = document.querySelector("canvas"),
ctx = canvas.getContext("2d");
// Draw rectangle one ("r" stands for rectangle)
let r_x = 20,
r_y = 20,
r_width = 80,
r_height = 30;
ctx.beginPath();
ctx.rect(r_x, r_y, r_width, r_height);
// Draw curved line
let start_x = r_x + r_width*2/3,
start_y = r_y + r_height,
point_one = { x: 30, y: 130 },
point_two = { x: 120, y: 150 };
ctx.moveTo(start_x, start_y)
ctx.quadraticCurveTo(
point_one.x,
point_one.y,
point_two.x,
point_two.y
);
// Draw second rectangle
r_x = 80, r_y = 150;
ctx.rect(r_x, r_y, r_width, r_height);
ctx.stroke();
<canvas width="300" height="200"></canvas>