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 四则运算精度修正函数代码
May 31 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
May 15 Javascript
jquery自定义类似$.ajax()的方法实现代码
Aug 13 Javascript
jQuery滚动新闻实现代码
Jun 26 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
Jul 19 Javascript
微信小程序 navbar实例详解
May 11 Javascript
JavaScrip关于创建常量的知识点
Dec 07 Javascript
微信小程序官方动态自定义底部tabBar的例子
Sep 04 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
Sep 28 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
Jan 21 Javascript
jQuery中getJSON跨域原理的深入讲解
Sep 02 jQuery
Vue 数据响应式相关总结
Jan 28 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
jquery实现鼠标拖动图片效果示例代码
2014/01/09 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
分享Python字符串关键点
2015/12/13 Python
python生成随机图形验证码详解
2017/11/08 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
Python 求向量的余弦值操作
2021/03/04 Python
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
2019银行员工个人工作自我鉴定
2019/06/27 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
Redis Lua脚本实现ip限流示例
2022/07/15 Redis