今天学习了canvas,利用它做了一个简易版的画板,校验自己所学的知识,分享出来以供大家学习指教。先上效果图。

主要是使用了canvas的stroke和clearReact来实现画板的绘画和橡皮擦功能,然后通过监听鼠标的按下、移动、弹起事件,完成绘画及擦除功能。直接上才艺代码

html:

在这里的代码看不到,不支持canvas的浏览器可以看到

css:

body {

}

#c1 {

}

.active {

}

javascript:

var oC = document.getElementById(‘c1’) //获取canvas容器
var ctx = oC.getContext(‘2d’) //生成画笔
var num = 0; //通过num的值,判断是画笔还是橡皮擦
var aInput = document.getElementsByTagName(‘input’); //获取按钮dom元素

for (var i = 0; i < aInput.length; i++) {
aInput[i].index = i //给dom元素添加自定义属性
aInput[i].onclick = function () {
for (var i = 0; i < aInput.length; i++) {
aInput[i].className = ‘’ //将class清空
}
this.className = ‘active’ //点击的按钮样式置为active
num = this.index //更改状态
}
}

oC.onmousedown = function (e) {
var x = e.pageX - oC.offsetLeft; //获取坐标x值
var y = e.pageY - oC.offsetTop; //获取坐标y值
ctx.beginPath();
ctx.moveTo(x, y)
oC.onmousemove = function (e) {
var x = e.pageX - oC.offsetLeft;
var y = e.pageY - oC.offsetTop;
if (num == 0) {
ctx.lineTo(x, y);
ctx.stroke();
} else if (num == 1) {
ctx.clearRect(x, y, 20, 20)
}
}
oC.onmouseup = function (e) {
oC.onmousemove = null;
oC.onmouseup = null;
ctx.closePath();
}
}

更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/118612183

canvas简易画布的更多相关文章

  1. html5 canvas简易版捕鱼达人游戏源码

    插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...

  2. HTML5 Canvas(画布)实战编程初级篇:基本介绍和基础画布元素

    欢迎大家阅读HTML5 Canvas(画布)实战编程初级篇系列,在这个系列中,我们将介绍最简单的HTML5画布编程.包括: 画布元素 绘制直线 绘制曲线 绘制路径 绘制图形 绘制颜色,渐变和图案 绘制 ...

  3. 安卓自定义View进阶-Canvas之画布操作 转载

    安卓自定义View进阶-Canvas之画布操作 转载 https://www.gcssloop.com/customview/Canvas_Convert 本来想把画布操作放到后面部分的,但是发现很多 ...

  4. canvas简易画板。

    在学canvas的时候,想到可以做一个自己用来画画的简易画板,加上canvas的基础都已经学完,便尝试做了一个画板.如图 1.获取标签. var c=document.getElementById(' ...

  5. h5-10 canvas 简易祖玛

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. (网页)html5 canvas清空画布方法(转)

    总结以下三种清空canvas画布的方式: 1. 最简单的方法:由于canvas每当高度或宽度被重设时,画布内容就会被清空,因此可以用以下方法清空: function clearCanvas() { v ...

  7. canvas简易画板

    代码展示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  8. canvas:画布

    画布有默认宽度,如果要自己设置宽带要写在属性上 列: <canvas id = "myCanvas" width = "600" height = &qu ...

  9. Canvas对画布及文字控制基础API学习

    这次纯API练习,比较简单,但是是为了之后的结合项目打基础的,所以也不能忽视它,下面开始: Canvas的平移.旋转.缩放 这里还是以上次画那个青春痘的DEMO为例[http://www.cnblog ...

随机推荐

  1. babel 的介绍及其配置

    vue/cli -- babel Babel 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其 ...

  2. 使用Camera API https://developer.mozilla.org/zh-CN/docs/Web/Guide/API/Camera

    使用Camera API 在本文章中 获取到所拍摄照片的引用 在网页中展示图片 完整的示例代码 HTML页面: JavaScript文件: 浏览器兼容性 通过Camera API,你可以使用手机的摄像 ...

  3. 分享两个实用的shell脚本

    各位,早上好啊~ 发现许久没有分享过技术文章了,今天分享两个部署项目时候比较实用的shell脚本 一键部署shell脚本 由于个人部署,会习惯把jar放到lib目录下面,如果你没有这个习惯,可以适当做 ...

  4. 执行Hive sql 报FAILED:Execution Error,return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

    在hive Beeline命令行使用insert into ... select ...向hive表插入数据时,报FAILED:Execution Error,return code 2 from o ...

  5. 记一次MySQL数据迁移到SQLServer全过程

    为什么要做迁移? 由于系统版本.数据库的升级,导致测试流程阻塞,为了保证数据及系统版本的一致性,我又迫切需要想用这套环境做性能测试,所以和领导.开发请示,得到批准后,便有了这次学习的机会,所以特此来记 ...

  6. golang /js index 转换excel字母表头

    Golang 1 package main 2 3 import "fmt" 4 5 func main() { 6 var Letters = []string{"A& ...

  7. .net core 配置swagger

    首先要现有一个asp.net  webApi项目 这里就不赘述了,接下来就按下面的步骤进行即可(本文是基于swagger 1.0.0-rc3版本的配置) 1.在project.json中添加 swag ...

  8. XCTF练习题---MISC---hong

    XCTF练习题---MISC---hong flag:BCTF{cute&fat_cats_does_not_like_drinking} 解题步骤: 1.观察题目,下载附件 2.下载文件后发 ...

  9. python中的sort用法

    内置的列表类型提供sort的方法 可以根据多项指标给list实例中的元素排序.在默认情况下,sort方法总是按照自然升序排列列表内的元素 #升序排列 list1=[2,3,1,2,5] list1.s ...

  10. 利用VTK和PyQt5对医学体数据进行渲染并展示

    简介 在一些医学相关的简单的项目(也许是学生的作业?毕业设计?)中,有时候可能需要集成一些可视化的功能,本文简单介绍一下,如何利用PyQt5和VTK来渲染体数据(三维数据),并集成进PyQt的UI框架 ...