鉴于两点,(x, y)
和(x1, y1)
,如何在这些点之间绘制一个箭头指向Web浏览器。 jQuery或HTML5可以这样做吗?
答案 0 :(得分:4)
你还需要一点高中三角学来绘制箭头。
var arrowHeadLength = 10; //whatever arbitrary value you want
// Line angle
var lineAngle = Math.atan ( (Y2-Y1)/(X2-X1) )
// Angle for arrow heads
var end1 = lineAngle + 45 * Math.PI/180
var end2 = lineAngle - 45 * Math.PI/180
// end points of arrow heads
var y3 = y2 - arrowHeadLength * Math.sin(end1)
var x3 = x2 - arrowHeadLength * Math.cos(end1)
var y4 = y2 - arrowHeadLength * Math.sin(end2)
var x4 = x2 - arrowHeadLength * Math.cos(end2)
答案 1 :(得分:2)
答案 2 :(得分:1)
你需要使用canvas或svg,你可以谷歌搜索使这两种技术更容易使用的库。
答案 3 :(得分:1)
使用canvas
元素和一些JavaScript可以非常轻松地完成。查看一些基本的画布功能here。
作为示例(使用现有的canvas
元素):
var context = document.getElementById('canvas').getContext('2d');
context.moveTo(0, 200);
context.lineTo(200, 0);
context.strokeStyle = '#000';
context.stroke();
答案 4 :(得分:1)
代码如下
<canvas id="arrow" style="border:1px solid;background-color:#000000;" width="300" height="300">Your web browser does not supports HTML5!</canvas>
<script>
function drawArrow() {
var canvas = document.getElementById('arrow');
var context = canvas.getContext('2d');
context.lineWidth = 3;
context.lineJoin = 'round';
context.strokeStyle = '#ffffff';
context.save();
context.beginPath();
context.moveTo(43,150);
context.lineTo(250,150);
context.stroke();
context.beginPath();
context.moveTo(250,150);
context.lineTo(200,80);
context.stroke();
context.beginPath();
context.moveTo(250,150);
context.lineTo(200,220);
context.stroke();
}
window.addEventListener("load", drawArrow, true);
</script>
然而,除非你继续从头到尾画线,否则箭头不会很好地闭合。备用示例位于此帖子http://gadgets-code.com/draw-arrow-on-html5-canvas 上
答案 5 :(得分:1)
你可以在SVG中做到这一点,这应该适用于IE7,IE8,IE9,chrome,safari,opera和firefox