h5简易手写板
。。。。。。。。。。。。。
我该说点什么呢,开头居然不知道想说点什么!好吧不知道说什么,我们就来说说这个手写板吧,虽然这个手写板现在没什么用,但是。。。。。,好像的确没什么用啊!
只是存粹哪里练手的的,呵 。呵 。(大写的尴尬)。我到底在说什么啊!!!好吧不说了,都快跑题了。
我们先看效果吧:
在我小学的美术可是拿 了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简易手写板的更多相关文章
- H5——简易马祖
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Html5 Page Creator,简易h5页面场景制作
- h5页面调用摄像头(简易版)
<input type="button" value="OpenVideo" id="btnOpenVideo" /> < ...
- h5图片上传简易版(FileReader+FormData+ajax)
一.选择图片(input的file类型) <input type="file" id="inputImg"> 1. input的file类型会渲染为 ...
- 一个简易h5涉及的ps技巧
事实证明,很长时间不做,是会忘掉的呀,的呀,呀,啊~ 1.合并图层 CTRL+E合并多个图层 2.切片 3.导出 文件-------导出------存储为web所用格式-------->> ...
- 用微信小程序做H5游戏尝试
微信小程序发布后,公司虽然没有拿到第一批内测资格,但作为微信亲密合作伙伴,一定要第一时间去尝试啦.现在微信小程序刚发布还在测试阶段,可以说是1.0版本,所以框架和结构内容都还不多,相关的文档跟微信AP ...
- 用PHP+H5+Boostrap做简单的音乐播放器(进阶版)
前言:之前做了一个音乐播放器(纯前端),意外的受欢迎,然后有人建议我把后台一起做了,正好也想学习后台,所以学了两天php(不要吐槽我的速度,慢工出细活嘛~)然后在之前的基础上也又完善了一些功能,所以这 ...
- h5的瀑布流
<!doctype html><html><head><meta charset="utf-8"><title>超简易瀑 ...
- 简易RPC框架-学习使用
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
随机推荐
- RocketMQ事务消息-demo
RocketMQ为4.3.0版本(我这种写法4.2.0不行) 如果你之前用的其他版本,需要去修改下系统的环境变量 maven工程用到的jar包 <dependencies> <!-- ...
- 解决y7000笔记本ubuntu下wifi无法连接问题
查看wifi与蓝牙硬件开关,发现ideapad的硬件模块都是关闭的 rfkill list all 打开终端 输入 sudo gedit /etc/rc.local 写入以下内容 进行保存 #!/bi ...
- Spring Boot web API接口设计之token、timestamp、sign
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/vbirdbest/article/details/80789817一:token 简介Token:访 ...
- 转://RMAN跨平台可传输表空间和数据库
参考链接: http://blog.itpub.net/23135684/viewspace-776048/ http://blog.sina.com.cn/s/blog_69e7b8d7010164 ...
- Idea突然不停indexing的问题
只要清理一下Idea的缓存和索引就可以了,在File-Invalidate Caches / Restart中,选择Invalidate and Restart,之后会重启Idea,然后就解决啦!
- Ubuntu14.04下如何安装TensorFlow
一.安装Anaconda Anaconda官网(www.continuum.io/downloads) 也可以在(https://repo.continuum.io/archive/)上根据自己的操作 ...
- Java关键字(六)——super
在 Java关键字(五)——this 中我们说 this 关键字是表示当前对象的引用.而 Java 中的 super 关键字则是表示 父类对象的引用. 我们分析这句话“父类对象的引用”,那说明我们使用 ...
- FAT32文件系统学习(3) —— 数据区(DATA区)
FAT32文件系统学习(3) —— 数据区(DATA区) 今天继续学习FAT32文件系统的数据区部分(Data区).其实这一篇应该是最有意思的,我们可以通过在U盘内放入一些文件,然后在程序中读取出来: ...
- C# 中的相对路径在 Picturebox 中的应用
前言 最近的项目需要将 picturebox 显示网络图片的小功能完成,不想用绝对路径取本地文件里的图片,因为将来要发布给用户的话让用户自己配置会很麻烦的,索性将路径设置成相对路径,将图片放在自己的项 ...
- Item 22: 当使用Pimpl机制时,在实现文件中给出特殊成员函数的实现
本文翻译自<effective modern C++>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果你曾经同过久的编译时间斗争过,那么你肯定对Pi ...