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();
        }

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

源码网盘地址

时间: 2024-11-06 03:42:41

h5简易手写板的相关文章

简易手写板

原文链接: http://www.cirmall.com/circuit/1727/2013%E5%B9%B4%E5%85%A8%E5%9B%BD%E5%A4%A7%E5%AD%A6%E7%94%9F%E7%94%B5%E5%AD%90%E8%AE%BE%E8%AE%A1%E7%AB%9E%E8%B5%9BG%E9%A2%98%20%E6%89%8B%E5%86%99%E7%BB%98%E5%9B%BE%E6%9D%BF%EF%BC%88%E4%B8%80%E7%AD%89%E5%A5%96%E

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

<input type="button" value="OpenVideo" id="btnOpenVideo" /> <input type="button" value="TakePicture" id="btnTakePicture" /> <input type="button" value="CloseVideo&qu

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

一.选择图片(input的file类型) <input type="file" id="inputImg"> 1. input的file类型会渲染为一个按钮和一段文字.点击按钮可打开文件选择窗口:file类型的input会有files属性,保存着文件的相关信息. 2. input.files是一个数组,由传入的file对象组成.每个file对象包含以下属性: lastModified:数值,表示最近一次修改时间的毫秒数: lastModifiedDate

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

原文地址:https://www.cnblogs.com/Kummy/p/10269645.html

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

前言:之前做了一个音乐播放器(纯前端),意外的受欢迎,然后有人建议我把后台一起做了,正好也想学习后台,所以学了两天php(不要吐槽我的速度,慢工出细活嘛~)然后在之前的基础上也又完善了一些功能,所以这个Demo比之前的可以算是进阶呢~v2.0哈哈哈~感觉截图体验很不好呢,所以在美图秀秀上面做了简易的动图,大家感受感受 正文: 老规矩,先上图~感觉有点卡,愿意等的就等等嘛,不愿意等的,往下看,有图片讲解 功能实现: 1.点击音乐列表播放音乐 2.拖动或点击进度条,调节音乐播放进度 3.浮动到音量控

简易日历的制作

本菇凉最近很是用心的在学习javascript,这日历的制作主要是innerHTML的运用,以及简单的数组的索引index.主要考察这两个,还有实现的思路.谢谢大家,因为是刚开始写博文呢,所以不详细的地方,后面一定好好改呢~~ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http

那些H5用到的技术(4)——弹幕

前言思路实现模式无限循环模式时间线模式停止显示弹幕 前言 以前玩卷轴射击游戏的时候,大量的BOSS子弹让我们无路可逃的时候,让我见识到了真正弹幕的威力,可自从A站B站火了之后,大量评论留言参与到了视频的播放中,也让我见识到了"弹幕"的威力,压根视频就没法看了--全看评论去了,就是那么好玩. 现在没有弹幕功能都不好意思说是做视频or直播网站的.而我们也不能落后呐,产品提需求了,活动H5里面弄个弹幕留言,看起来就高大上有木有啊,以前的静态留言形势都太古板啦,弹幕才能用户high起来啊!好吧

使用 HttpClient 和 HtmlParser 实现简易爬虫_Linux !

body { font-family: Lucida Console; font-size: 12pt; line-height: 1.5; } html, body { color: ; background-color: ; } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bold; } h3 { font-size:1.3em; font-weight:bold; } h4 { fo

h5的瀑布流

<!doctype html><html><head><meta charset="utf-8"><title>超简易瀑布流</title><style>body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, form, fieldset, input, textarea, p, blockquote, th, td ,span,