。。。。。。。。。。。。。

  

我该说点什么呢,开头居然不知道想说点什么!好吧不知道说什么,我们就来说说这个手写板吧,虽然这个手写板现在没什么用,但是。。。。。,好像的确没什么用啊!

只是存粹哪里练手的的,呵 。呵 。(大写的尴尬)。我到底在说什么啊!!!好吧不说了,都快跑题了。

我们先看效果吧:

  在我小学的美术可是拿 了98分的,你说我画的好不好,厉不厉害,害不害怕。谔谔,好吧长大以后这个画画的天分就下降了这么点点哈。。。

废话不多说,整体功能,可以改变颜色,线条有有细(怎么感觉哪里不对),可以清除。然后 然后没有然后了。。

css 就不多说了吧(其实就是难得弄)。。

然后是html

<canvas id="canvas"></canvas>
<div id="controller">
<div id="dclear"><a href="javascript:;" id="btnclear">清除</a></div>
<div id="dcolors">
<div class="dcolor dblack" data-color="black"></div>
<div class="dcolor dred" data-color="red"></div>
<div class="dcolor dgreen" data-color="green"></div>
<div class="dcolor dblue" data-color="blue"></div>
<div class="dcolor ffe0" data-color="#88ffe0"></div>
<div class="dcolor ff4e" data-color="#60ff4e"></div>
<div class="dcolor ee6e" data-color="#b1ee6e"></div>
<div class="dcolor a8ee" data-color="#eba8ee"></div>
<div class="dcolor c8ff" data-color="#4fc8ff"></div>
<div class="dcolor cb66" data-color="#eecb66"></div>
<div class="dcolor d84ee" data-color="#9c84ee"></div>
</div>
<div id="xians">
<div class="dxian" data-color="1">线1</div>
<div class="dxian" data-color="2">线2</div>
<div class="dxian" data-color="3">线3</div>
<div class="dxian" data-color="4">线4</div>
<div class="dxian" data-color="6">线6</div>
<div class="dxian" data-color="8">线8</div>
<div class="dxian" data-color="10">线10</div>
<div class="dxian" data-color="12">线12</div>
<div class="dxian" data-color="16">最大</div>
</div>
</div>

最后核心js来了,大家注意了。

var isMouseDown = false;
var LastLoc = { x: 0, y: 0 };
var scolor= "black";

onload = function () {//页面加载完毕后执行
canvasWidth = 500;
canvasHight = 500;
canvas = document.getElementById("canvas");//演员
context = canvas.getContext("2d");//相当于是演员去表演的舞台
drawGrid();
canvas.onmousedown = function (e) {//鼠标按下
e.preventDefault();//取消事件的默认动作
isMouseDown = true;
LastLoc = windowToCanvas(e.clientX, e.clientY);
canva(e);
};
canvas.onmouseup = function (e) {//鼠标按起
e.preventDefault();
isMouseDown = false;
};
canvas.onmouseout = function (e) {//出了画布
e.preventDefault();
isMouseDown = false;
};
canvas.onmousemove = function (e) {//鼠标移动
e.preventDefault();
canva(e);
}; $("#btnclear").click(function () {
context.clearRect(0, 0, canvasWidth, canvasHight);
drawGrid();
});
$(".dcolor").click(function () {
$(this).addClass("sel").siblings().removeClass("sel");
scolor = $(this).attr("data-color");
});
$(".dxian").click(function () {
$(this).addClass("sel").siblings().removeClass("sel");
border = $(this).attr("data-color");
});
};
function windowToCanvas(x, y)//x,y为距离屏幕的距离
{
var bbox = canvas.getBoundingClientRect();//canvas距离屏幕的距离
return { x: Math.round(x - bbox.left), y: Math.round(y - bbox.top) };//获取距离canvas的距离
}
function canva(e){
if (isMouseDown) {
var curloc = windowToCanvas(e.clientX, e.clientY);//获取到移动到的那个点的坐标
context.beginPath();
context.moveTo(LastLoc.x, LastLoc.y);
context.lineTo(curloc.x, curloc.y);
context.strokeStyle = scolor;
context.lineWidth = border;
context.lineCap = "round";//帽子
context.lineJoin = "round";
context.stroke();
LastLoc = curloc;
}
}
function drawGrid() { canvas.width = canvasWidth;//画板宽
canvas.height = canvasHight;//画板高
context.strokeStyle = "#000";//画板颜色 context.beginPath();//方法在一个画布中开始子路径的一个新的集合。
context.moveTo(3, 3); //方法可把窗口的左上角移动到一个指定的坐标。
context.lineTo(canvasWidth - 3, 3);
context.lineTo(canvasWidth - 3, canvasHight - 3);
context.lineTo(3, canvasWidth - 3);
context.closePath();
context.lineWidth = 6;//用宽度为 6 像素的线条来绘制矩形:
context.stroke();//结束 //context.beginPath();
//context.moveTo(0, 0);
//context.lineTo(canvasWidth, canvasHight);
//context.moveTo(canvasWidth, 0);
//context.lineTo(0, canvasHight); //context.moveTo(canvasWidth / 2, 0);
//context.lineTo(canvasWidth / 2, canvasHight);
//
//context.moveTo(0, canvasHight / 2);
//context.lineTo(canvasWidth, canvasHight / 2);
//context.lineWidth = 1;
//context.stroke();
}

 实在不想写字了。。。。。

源码网盘地址

h5简易手写板的更多相关文章

  1. H5——简易马祖

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  2. Html5 Page Creator,简易h5页面场景制作

  3. h5页面调用摄像头(简易版)

    <input type="button" value="OpenVideo" id="btnOpenVideo" /> < ...

  4. h5图片上传简易版(FileReader+FormData+ajax)

    一.选择图片(input的file类型) <input type="file" id="inputImg"> 1. input的file类型会渲染为 ...

  5. 一个简易h5涉及的ps技巧

    事实证明,很长时间不做,是会忘掉的呀,的呀,呀,啊~ 1.合并图层 CTRL+E合并多个图层 2.切片 3.导出 文件-------导出------存储为web所用格式-------->> ...

  6. 用微信小程序做H5游戏尝试

    微信小程序发布后,公司虽然没有拿到第一批内测资格,但作为微信亲密合作伙伴,一定要第一时间去尝试啦.现在微信小程序刚发布还在测试阶段,可以说是1.0版本,所以框架和结构内容都还不多,相关的文档跟微信AP ...

  7. 用PHP+H5+Boostrap做简单的音乐播放器(进阶版)

    前言:之前做了一个音乐播放器(纯前端),意外的受欢迎,然后有人建议我把后台一起做了,正好也想学习后台,所以学了两天php(不要吐槽我的速度,慢工出细活嘛~)然后在之前的基础上也又完善了一些功能,所以这 ...

  8. h5的瀑布流

    <!doctype html><html><head><meta charset="utf-8"><title>超简易瀑 ...

  9. 简易RPC框架-学习使用

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

随机推荐

  1. 通过JS如何获取IP地址

    通过JS获取你真实的外网IP和内网IP,就算开代理也没有用,想想真是太可怕了,还能不能愉快的装逼了! 代码: //get the IP addresses associated with an acc ...

  2. y7000笔记本 darknet-yolo安装与测试(Ubuntu18.04+Cuda9.0+Cudnn7.1)

    环境配置看上一贴 https://www.cnblogs.com/clemente/p/10386479.html 1 安装darknet 1-1 克隆darknet repo git clone h ...

  3. Kali-linux使用Metasploit基础

    Metasploit是一款开源的安全漏洞检测工具.它可以帮助用户识别安全问题,验证漏洞的缓解措施,并对某些软件进行安全性评估,提供真正的安全风险情报.当用户第一次接触Metasploit渗透测试框架软 ...

  4. robotframework日志中文乱码,编译提示‘utf-8’ codecxxxx。

    1.需要设置robotframework的语系 2.设置完后,需要重启robotframework才生效.它比较特别,什么改变都要重启才生效

  5. jenkins+mail邮件配置

    1.配置过程中出现的问题,“501 mail from address must be same as authorization user” 解决方案 2.还有一个问题,在配置jenkins的系统配 ...

  6. Vue2.x源码学习笔记-Vue实例的属性和方法整理

    还是先从浏览器直观的感受下实例属性和方法. 实例属性: 对应解释如下: vm._uid // 自增的id vm._isVue // 标示是vue对象,避免被observe vm._renderProx ...

  7. .net ElasticSearch-Sql 扩展类【原创】

    官方提供的是java sdk,并支持jdbc方式的查询结果输出;但是却没有.net sdk的支持. 开发 ElasticSearch-Sql 第三方开源项目的.net sdk,未来集成入bsf框架.( ...

  8. 基于 Django2 实现邮箱注册登录功能

    1. 开发环境 Python 3.6.5 Django 2.2 2. 项目功能 用户登录 邮箱注册 图形验证码 找回密码 修改密码 用户退出 3. 项目创建 首先创建项目: django-admin ...

  9. React-菜鸟学习笔记(一)

    新公司的项目前端架构用的是react.js 之前孤陋寡闻并没听说过,想着后期开发和维护多少要会点前端的东西,就简单研究一下.个人的学习习惯能写代码的就不写文字,必要的地方加两行注释,代码一行行敲下去, ...

  10. MySQL定时备份数据库(全库备份)

    一.MySQL数据备份 1.1. mysqldump命令备份数据 在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump ...