JavaScript使用canvas繪制坐標(biāo)和線
更新時間:2021年04月28日 15:06:47 作者:evan_qb
這篇文章主要為大家詳細(xì)介紹了JavaScript使用canvas繪制坐標(biāo)和線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了JavaScript使用canvas繪制坐標(biāo)和線的具體代碼,供大家參考,具體內(nèi)容如下
具體代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>在指定位置畫多個點(diǎn)</title>
<style>
canvas{
border: 1px dashed gray;
}
</style>
</head>
<body>
<canvas id="cvs" width="500" height="500"></canvas>
</body>
</html>
js代碼:
<script>
var cvs = document.getElementById('cvs');
var ctx = cvs.getContext('2d');
// 坐標(biāo)軸距離畫布上右下左的邊距
var padding = {
top:20,
right:20,
bottom:20,
left:20
}
// 坐標(biāo)軸中箭頭的寬和高
var arrow = {
width:12,
height:20
}
// 求坐標(biāo)軸上頂點(diǎn)的坐標(biāo)
var vertexTop = {
x:padding.left,
y:padding.top
}
// 求坐標(biāo)軸原點(diǎn)的坐標(biāo)
var origin = {
x:padding.left,
y:cvs.height - padding.bottom
}
// 求坐標(biāo)軸右頂點(diǎn)的坐標(biāo)
var vertexRight = {
x:cvs.width - padding.left,
y:cvs.height - padding.bottom
}
//設(shè)置線寬
ctx.lineWidth = 2;
//畫坐標(biāo)軸的兩條線
ctx.beginPath();
ctx.moveTo(vertexTop.x,vertexTop.y);
ctx.lineTo(origin.x,origin.y);
ctx.lineTo(vertexRight.x,vertexRight.y);
ctx.stroke();
//如何畫箭頭
//畫頂上箭頭
// ^
// |
// |
ctx.beginPath();
ctx.moveTo(vertexTop.x,vertexTop.y);
ctx.lineTo(vertexTop.x - arrow.width/2,vertexTop.y + arrow.height);
ctx.lineTo(vertexTop.x,vertexTop.y + arrow.height/2);
ctx.lineTo(vertexTop.x + arrow.width/2,vertexTop.y + arrow.height);
ctx.fill();
//畫右邊的箭頭
// --->
ctx.beginPath();
ctx.moveTo(vertexRight.x,vertexRight.y);
ctx.lineTo(vertexRight.x - arrow.height,vertexRight.y - arrow.width);
ctx.lineTo(vertexRight.x - arrow.height/2,vertexRight.y);
ctx.lineTo(vertexRight.x - arrow.height,vertexRight.y + arrow.width);
ctx.fill();
/*
* 在坐標(biāo)軸中指定位置畫點(diǎn),坐標(biāo)算法:
* 點(diǎn)的x軸:原點(diǎn)x坐標(biāo) + 點(diǎn)到原點(diǎn)的水平距離
* 點(diǎn)的y軸:原點(diǎn)y坐標(biāo) - 點(diǎn)到原點(diǎn)的垂直距離
*/
//定義點(diǎn)的坐標(biāo)
var points = [[10,10],[50,50],[90,90],[130,130],[170,170],[200,200]];
//在坐標(biāo)中畫點(diǎn) 使用循環(huán)遍歷數(shù)組中的坐標(biāo)
//設(shè)置顏色
ctx.fillStyle = "green";
points.forEach(function(arr){
ctx.fillRect(origin.x + arr[0],origin.y - arr[1],5,5);
});
//根據(jù)點(diǎn)連線
//防止重繪
ctx.beginPath();
ctx.lineWidth = 2;
ctx.strokeStyle = "yellow";
points.forEach(function (arr) {
ctx.lineTo(origin.x + arr[0] + 1.8,origin.y - arr[1] + 1.8);
});
//描邊
ctx.stroke();
</script>
效果如下:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- 基于JavaScript實(shí)現(xiàn)數(shù)值型坐標(biāo)軸刻度計算算法(echarts的y軸刻度計算)
- 如何利用js根據(jù)坐標(biāo)判斷構(gòu)成單個多邊形是否合法
- JavaScript offset實(shí)現(xiàn)鼠標(biāo)坐標(biāo)獲取和窗口內(nèi)模塊拖動
- JavaScript 空間坐標(biāo)的使用
- JavaScript實(shí)現(xiàn)捕獲鼠標(biāo)坐標(biāo)
- js中火星坐標(biāo)、百度坐標(biāo)、WGS84坐標(biāo)轉(zhuǎn)換實(shí)現(xiàn)方法示例
- JS圖形編輯器場景坐標(biāo)視口坐標(biāo)的相互轉(zhuǎn)換
相關(guān)文章
js實(shí)現(xiàn)頂部可折疊的菜單工具欄效果實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)頂部可折疊的菜單工具欄效果,可實(shí)現(xiàn)鼠標(biāo)滑過菜單工具欄出現(xiàn)折疊與展開效果,涉及javascript鼠標(biāo)事件及樣式的操作技巧,需要的朋友可以參考下2015-05-05
JS實(shí)現(xiàn)左右拖動改變內(nèi)容顯示區(qū)域大小的方法
這篇文章主要介紹了JS實(shí)現(xiàn)左右拖動改變內(nèi)容顯示區(qū)域大小的方法,涉及JavaScript實(shí)時響應(yīng)鼠標(biāo)事件動態(tài)改變頁面元素屬性的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
小程序異步問題之多個網(wǎng)絡(luò)請求依次執(zhí)行并依次收集請求結(jié)果
這篇文章主要介紹了小程序異步問題之多個網(wǎng)絡(luò)請求依次執(zhí)行并依次收集請求結(jié)果,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
JS實(shí)現(xiàn)當(dāng)前頁居中分頁效果的方法
這篇文章主要介紹了JS實(shí)現(xiàn)當(dāng)前頁居中分頁效果的方法,涉及javascript操作頁面元素與樣式的相關(guān)技巧,需要的朋友可以參考下2015-06-06

