JavaScript是一種廣泛應(yīng)用于網(wǎng)頁制作的編程語言,它可以實(shí)現(xiàn)很多網(wǎng)頁交互的功能,比如表單驗(yàn)證、滑動門效果、響應(yīng)式布局等等。而今天我們要討論的是,如何使用JavaScript來畫箭頭。
畫箭頭在網(wǎng)頁制作中應(yīng)用廣泛,比如在地圖API中用來標(biāo)示路線的起點(diǎn)和終點(diǎn),或者在PPT制作中用來標(biāo)明方向和流程等等。下面我們就來看看如何使用JavaScript來實(shí)現(xiàn)畫箭頭的效果。
function drawArrow(context, fromX, fromY, toX, toY, theta, headlen, width, color) {
// 計(jì)算箭頭角度theta及箭頭長度headlen
theta = typeof (theta) != 'undefined' ? theta : 30;
headlen = typeof (headlen) != 'undefined' ? headlen : 10;
width = typeof (width) != 'undefined' ? width : 1;
color = typeof (color) != 'undefined' ? color : '#000';
// 計(jì)算箭頭起點(diǎn)和終點(diǎn)坐標(biāo)
var angle = Math.atan2(fromY - toY, fromX - toX) * 180 / Math.PI,
angle1 = (angle + theta) * Math.PI / 180,
angle2 = (angle - theta) * Math.PI / 180,
topX = headlen * Math.cos(angle1),
topY = headlen * Math.sin(angle1),
botX = headlen * Math.cos(angle2),
botY = headlen * Math.sin(angle2),
arrowX,
arrowY;
context.beginPath();
context.moveTo(fromX, fromY);
context.lineTo(toX, toY);
arrowX = toX + topX;
arrowY = toY + topY;
context.moveTo(arrowX, arrowY);
context.lineTo(toX, toY);
arrowX = toX + botX;
arrowY = toY + botY;
context.lineTo(arrowX, arrowY);
context.strokeStyle = color;
context.lineWidth = width;
context.stroke();
}
上述代碼中定義了一個drawArrow()函數(shù),這個函數(shù)可以傳入6個參數(shù),分別是canvas上下文、箭頭起點(diǎn)的x和y坐標(biāo)、箭頭終點(diǎn)的x和y坐標(biāo)、箭頭角度、箭頭長度、箭頭寬度和箭頭顏色。函數(shù)內(nèi)部計(jì)算了箭頭的起點(diǎn)和終點(diǎn)坐標(biāo),通過canvas API繪制了箭頭。
使用這個函數(shù)也非常簡單,只需要調(diào)用它即可:
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
drawArrow(ctx, 50, 50, 200, 50);
上述代碼首先獲取了canvas元素及其上下文,然后調(diào)用drawArrow()函數(shù),傳入canvas上下文和箭頭起點(diǎn)和終點(diǎn)的坐標(biāo)。在canvas中繪制箭頭。效果如下:
使用drawArrow()函數(shù)畫箭頭可以靈活地控制箭頭的起點(diǎn)和終點(diǎn)、大小、角度等屬性,具體效果可以根據(jù)實(shí)際需求進(jìn)行定制,非常實(shí)用。