JavaScript使用canvas繪制坐標(biāo)和線
本文實(shí)例為大家分享了JavaScript使用canvas繪制坐標(biāo)和線的具體代碼,供大家參考,具體內(nèi)容如下
具體代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>在指定位置畫(huà)多個(gè)點(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)軸距離畫(huà)布上右下左的邊距
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;
//畫(huà)坐標(biāo)軸的兩條線
ctx.beginPath();
ctx.moveTo(vertexTop.x,vertexTop.y);
ctx.lineTo(origin.x,origin.y);
ctx.lineTo(vertexRight.x,vertexRight.y);
ctx.stroke();
//如何畫(huà)箭頭
//畫(huà)頂上箭頭
// ^
// |
// |
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();
//畫(huà)右邊的箭頭
// --->
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)軸中指定位置畫(huà)點(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)中畫(huà)點(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>
效果如下:

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

