JavaScript使用canvas绘制坐标和线


Posted in Javascript onApril 28, 2021

本文实例为大家分享了JavaScript使用canvas绘制坐标和线的具体代码,供大家参考,具体内容如下

具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>在指定位置画多个点</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');
 
    // 坐标轴距离画布上右下左的边距
    var padding = {
        top:20,
        right:20,
        bottom:20,
        left:20
    }
    // 坐标轴中箭头的宽和高
    var arrow = {
        width:12,
        height:20
    }
    // 求坐标轴上顶点的坐标
    var vertexTop = {
        x:padding.left,
        y:padding.top
    }
    // 求坐标轴原点的坐标
    var origin = {
        x:padding.left,
        y:cvs.height - padding.bottom
    }
    // 求坐标轴右顶点的坐标
    var vertexRight = {
        x:cvs.width - padding.left,
        y:cvs.height - padding.bottom
    }
 
    //设置线宽
    ctx.lineWidth = 2;
    //画坐标轴的两条线
    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();
 
    /*
     * 在坐标轴中指定位置画点,坐标算法:
     * 点的x轴:原点x坐标 + 点到原点的水平距离
     * 点的y轴:原点y坐标 - 点到原点的垂直距离
     */
    //定义点的坐标
    var points = [[10,10],[50,50],[90,90],[130,130],[170,170],[200,200]];
    //在坐标中画点 使用循环遍历数组中的坐标
    //设置颜色
    ctx.fillStyle = "green";
    points.forEach(function(arr){
        ctx.fillRect(origin.x + arr[0],origin.y - arr[1],5,5);
    });
    //根据点连线
    //防止重绘
    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>

效果如下:

JavaScript使用canvas绘制坐标和线

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中把数字转换为字符串的程序代码
Jun 19 Javascript
JS实现div居中示例
Apr 17 Javascript
C++中的string类的用法小结
Aug 07 Javascript
浅析javascript的return语句
Dec 15 Javascript
JavaScript DOM 对象深入了解
Jul 20 Javascript
JavaScript常用代码书写规范的超全面总结
Sep 11 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
vue实现商城上货组件简易版
Nov 27 Javascript
React优化子组件render的使用
May 12 Javascript
阿望教你用vue写扫雷小游戏
Jan 20 Javascript
原生js中运算符及流程控制示例详解
Jan 05 Javascript
vue路由实现登录拦截
Mar 24 Vue.js
JS Object构造函数之Object.freeze
Apr 28 #Javascript
关于vue中如何监听数组变化
vue实现简单数据双向绑定
Apr 28 #Vue.js
JS异步堆栈追踪之为什么await胜过Promise
Apr 28 #Javascript
vue引入Excel表格插件的方法
Apr 28 #Vue.js
react如何快速设置文件路径别名
原生JS封装vue Tab切换效果
You might like
PHP数据库处理封装类实例
2016/12/24 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
深入Python解释器理解Python中的字节码
2015/04/01 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
盖尔斯工厂店:GUESS Factory
2020/01/21 全球购物
Java语言的优势
2015/01/10 面试题
网络书店创业计划书
2014/02/07 职场文书
房地产广告词大全
2014/03/19 职场文书
运动会广播稿50字-100字
2014/10/11 职场文书
法定代表人授权委托书格式
2014/10/14 职场文书
委托证明范本
2014/11/25 职场文书
给老婆的检讨书
2015/01/27 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
七年级英语教学反思
2016/02/15 职场文书
原生JS封装vue Tab切换效果
2021/04/28 Vue.js
Java基础之this关键字的使用
2021/06/30 Java/Android
关于vue-router-link选择样式设置
2022/04/30 Vue.js
hive数据仓库新增字段方法
2022/06/25 数据库