使用canvas来创建区域,建立核心对象,再接着分别获取几个按钮的节点,确定鼠标按下的起始位置,和鼠标释放时的位置,并为其加上移动事件,鼠标松开时则删除移动节点。点击清除画布按钮,使用clearRect清除画布。

代码如下,注释在其内,请君一阅。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>简易画图工具</title>
</head>
<style>section {width: 700px;}h1 {text-align: center;}canvas {margin-bottom: 20px;}aside{text-align: center;}aside>input{margin-right: 20px;}
</style><body><section><h1>简易画图工具</h1><canvas id="canNode" width="700px" height="400px"></canvas><aside><input type="button" value="清除画布" class="clear"><input type="color" class="yanse"><input type="range" min="1" max="10" class="cuxi"></aside></section><script src="./hua.js"></script>
</body></html>
canNode.style.border = "3px solid red";
let pen = canNode.getContext("2d");
console.log(canNode.clientWidth, canNode.clientHeight);//canvas标签的填充盒尺寸  700、400
console.log(canNode.offsetLeft, canNode.offsetTop);//canvas节点距左侧和顶部的距离  8、72//获取按钮节点
let clearEle = document.getElementsByClassName("clear")[0];
let colEle = document.getElementsByClassName("yanse")[0];
let cuxiEle = document.getElementsByClassName("cuxi")[0];//鼠标按下时
canNode.addEventListener("mousedown", function (e) {let event = e || window.event;//获取鼠标起始位置let x1 = event.clientX - canNode.offsetLeft;let y1 = event.clientY - canNode.offsetTop;// console.log(event.offsetX, event.offsetY);// console.log(event.clientX, event.clientY);// console.log(event.clientX - canNode.offsetLeft, event.clientY - canNode.offsetTop);pen.beginPath();pen.moveTo(x1, y1);//鼠标移动时进行绘画canNode.addEventListener("mousemove", hua);//鼠标松开时则删除移动节点canNode.addEventListener("mouseup", function () {canNode.removeEventListener("mousemove", hua);});
});//绘画移动
function hua(e) {let event = e || window.event;let x2 = event.offsetX;let y2 = event.offsetY;pen.lineTo(x2, y2);pen.strokeStyle = colEle.value;pen.lineWidth = cuxiEle.value;pen.stroke();
}//清除画布
clearEle.addEventListener("click", function () {pen.clearRect(0,0,canNode.clientWidth, canNode.clientHeight);
});

基于html+JS实现canvas简易画图工具相关推荐

  1. JS实现简易画图工具

    [Canvas]画布 Canvas为HTML5中新加入的标签, JS 可在上面进行绘画,Canvas一个矩形的单元.Canvas 拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. 绘制图形的步骤 ...

  2. 怎么画图自动生成HTML,用canvas写一个简易画图工具

    本文将为您描述用canvas写一个简易画图工具,具体操作方法: Document style="border:1px solid #000000;">您的浏览器不支持canv ...

  3. 图片怎么转为html5,将图片转化为矢量并canvas化的容易工具(基于Node.js + HTML5 canvas)...

    将图片转化为矢量并canvas化的简单工具(基于Node.js + HTML5 canvas) 一.前言 最近需要做一个图标的矢量化,但是没有数据,因此采用了node.js作为数据处理工具,canva ...

  4. 简易画图工具(Python)

    简易画图工具(Python) 小黑最近在努力的入门python,正好学习到了Python的tkinker模块下的Canvas(画布)和Button(按钮)再加上相应的事务管理,实现了一个简单的画图小工 ...

  5. 认识Web前端、Web后端、桌面app和移动app新开发模式 - 基于Node.js环境和VS Code工具...

    认识Web.桌面和移动app新开发模式 - 基于Node.js环境和VS Code工具 一.开发环境的搭建(基于win10) 1.安装node.js和npm 到node.js官网下载安装包(包含npm ...

  6. 基于Node.js + WebSocket 的简易聊天室

    代码地址如下: http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.j ...

  7. HTML5Canvas实现简易画图工具(铅笔,直线,矩形,圆,文本框,橡皮擦等)

    初学Canvas,用canvas做了简单的画图工具体会并熟悉了一下大致的实现方案.开发完也算是基本了解canvas的用法了. HTML部分: <div class="app" ...

  8. html5 canvas 制作画图工具。

    html5比起之前最大的进步之一,就是引入了canvas标签.canvas 顾名思义,是个画布,我们可以通过脚本语言(javascript),来操作canvas,画出各种各样的图案. 既然是画布,那就 ...

  9. java简易画图工具_求Java简单画图工具

    展开全部 ///保存一个pb.java文件直接编译执e68a8462616964757a686964616f31333262363631行 import java.applet.*; import j ...

最新文章

  1. 目标板挂载NFS方法及错误解决
  2. android vlc eclipse,在Eclipse下导入vlc-android并编译
  3. jQuery,data()方法学习
  4. Silverlight与HTML双向交互
  5. 腾讯的这款产品下架了
  6. 相机标准之onvif---开放型网络视频接口论坛onvif 简介
  7. Resharper插件如何启用原VS的智能提示
  8. 随想录(cloud 网络库)
  9. 别人的趋势不一定是你的未来
  10. 全国加油站分布数据/停车场分布/公园分布/景区分布/保护区分布/2020年poi感兴趣点
  11. mysql免安装教程_MySQL免安装版环境配置图文教程
  12. pyqt5转pyqt6需要注意的事项
  13. c语言 分数通分,如何用C语言,实现简单的分数化简
  14. 13 Java反射机制
  15. svn process exited with error code: 1
  16. 2021年北京市级企业技术中心申报时间及流程是什么,补贴300万
  17. TSM是NFC应用发展的关键环节
  18. 大学生前端,毕业面试知道这几点,offter拿到手软
  19. 通过编程求解炉石传说酒馆战旗最佳血量和攻击力分配方式
  20. 基于安卓的校园跳蚤市场app

热门文章

  1. 简单易懂的CRC校验原理阐述
  2. CDH问题汇总之——ERROR main:com.cloudera.server.cmf.bootstrap.EntityManagerFactoryBean: Tables have unsuppo
  3. 音视频技术开发周刊 | 254
  4. 厦门大学437社会工作实务考研参考书目
  5. 【GNURadio实验报告】实验2-使用GNURadio仿真OOK信号
  6. Mac安装VirtualBox虚拟机-大数据学习准备
  7. restframework(一)
  8. 九连环课程设计c语言,用C语言编程解九连环
  9. Docker 多阶级构建:Docker 下如何实现镜像多阶级构建?
  10. python数据可视化之Matplotlib