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 相关文章推荐
js 模拟气泡屏保效果代码
Jul 10 Javascript
JavaScript中的变量声明早于赋值分析
Mar 01 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 Javascript
JavaScript阻止事件冒泡示例分享
Dec 28 Javascript
使用JavaScript刷新网页的方法
Jun 04 Javascript
浅谈jquery中使用canvas的问题
Oct 10 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
Nov 25 Javascript
angular.JS实现网页禁用调试、复制和剪切
Mar 31 Javascript
vue params、query传参使用详解
Sep 12 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
Oct 08 Javascript
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
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
在PHP中执行系统外部命令
2006/10/09 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
php关联数组快速排序的方法
2015/04/17 PHP
php文件系统处理方法小结
2016/05/23 PHP
php无法连接mysql数据库的正确解决方法
2016/07/01 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
js常用排序实现代码
2010/12/28 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
自己封装的常用javascript函数分享
2015/01/07 Javascript
jquery中radio checked问题
2015/03/16 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
opencv 识别微信登录验证滑动块位置
2018/08/07 Javascript
webpack4.x下babel的安装、配置及使用详解
2019/03/07 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
2019/05/03 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python 中的with关键字使用详解
2016/09/11 Python
python使用Tesseract库识别验证
2018/03/21 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
简历中个人求职的自我评价模板
2013/11/29 职场文书
小学生考试获奖感言
2014/01/30 职场文书
户外活动总结范文
2014/04/30 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
个人收入证明范本
2014/09/18 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android