一个手绘板,兼容移动端

12:00:14

这是网上的一个手绘板,中间还是有很多不足,但是也有很多可以学习的地方。我发上来仅供参考,代码见下:

<!DOCTYPE html>
<html>
    <head>
        <title>画板实验</title>
        <meta charset="UTF-8">
        <meta name="viewport"content="width=device-width, initial-scale=1.0">
        <style type="text/css">
            body{background-color: white;}
        </style>
    </head>
    <body >
        <canvas id="myCanvas"></canvas>
        <div>
            <button onclick="clean();">清 空</button>
            <button onclick="save();">生成图片</button>
        </div>
        <img id=‘img‘ alt=‘请涂鸦……‘/>
        <script type="text/javascript">
            var canvas, board, img;
            canvas = document.getElementById(‘myCanvas‘);
            img = document.getElementById(‘img‘);
            canvas.height = 300;
            canvas.width = 300;
            board = canvas.getContext(‘2d‘);
            var mousePress = false;
            var last = null;

            //开始
            function beginDraw() {
                mousePress = true;
            }

            function drawing(event) {
                event.preventDefault();
                if (!mousePress)
                    return;
                var xy = pos(event);
                if (last != null) {
                    board.beginPath();
                    board.moveTo(last.x, last.y);
                    board.lineTo(xy.x, xy.y);
                    board.stroke();
                }
                last = xy;
            }

            function endDraw(event) {
                mousePress = false;
                event.preventDefault();
                last = null;
            }

            function pos(event) {
                var x, y;
                if (isTouch(event)) {
                    x = event.touches[0].pageX;
                    y = event.touches[0].pageY;
                } else {
                    x = event.offsetX + event.target.offsetLeft;
                    y = event.offsetY + event.target.offsetTop;
                }
                // log(‘x=‘+x+‘ y=‘+y);
                return {
                    x : x,
                    y : y
                };
            }

            function log(msg) {
                var log = document.getElementById(‘log‘);
                var val = log.value;
                log.value = msg + ‘n‘ + val;
            }

            function isTouch(event) {
                var type = event.type;
                if (type.indexOf(‘touch‘) >= 0) {
                    return true;
                } else {
                    return false;
                }
            }

            function save() {
                //base64
                var dataUrl = canvas.toDataURL();
                // dataUrl = dataUrl.replace("image/png","image/octet-stream");
                img.src = dataUrl;
            }

            function clean() {
                board.clearRect(0, 0, canvas.width, canvas.height);
            }

            board.lineWidth = 1;
            board.strokeStyle = "#0000ff";
            canvas.onmousedown = beginDraw;
            canvas.onmousemove = drawing;
            canvas.onmouseup = endDraw;
            canvas.addEventListener(‘touchstart‘, beginDraw, false);
            canvas.addEventListener(‘touchmove‘, drawing, false);
            canvas.addEventListener(‘touchend‘, endDraw, false);
        </script>
    </body>
</html>

ps:报一下这个的缺点吧

1.功能太少,只有保存和清空,没有其他的撤销,反撤销

2.没有图片截取最小大小,没有自动大小(这个好解决)

(上面两个是根据我自己的需求得出的、、下面是真·问题)

3.鼠标点击完屏幕,移出区域之后会可以直接不点就能画,需要再在区域里点一下才可以取消效果,原因是仅仅定义了鼠标点击提起mouseup,并没有相应匹配的移出的事件。

时间: 2024-08-10 21:30:25

一个手绘板,兼容移动端的相关文章

看到的一个手绘板,兼容移动端

这是网上的一个手绘板,中间还是有很多不足,但是也有很多可以学习的地方.我发上来仅供参考,代码见下: <!DOCTYPE html> <html> <head> <title>画板实验</title> <meta charset="UTF-8"> <meta name="viewport"content="width=device-width, initial-scale=1.0&

同步手绘板——项目开发计划

背景: 用户在使用PC电脑进行手绘创作时,普通的鼠标,键盘等输入设备往往不能满足手绘需要的灵活以及精细控制的需求,而移动设备(手机或平板)的输入方式是直接用手指或触摸笔在触摸屏幕上手绘,正好可以满足手绘的需要,但是移动设备的显示屏幕往往太小,为了解决手绘体验的问题,可将二者结合起来,PC端作为显示终端,移动端作为输入设备,用手指或触摸笔在移动端直接手绘时,PC端可以实时显示出绘制后的结果.这样就能不用购买其他数位板的情况下得到极佳的手绘体验. 项目简介: 开发一个将移动设备用作手绘输入板,PC端

凡拓680 手绘板驱动盘镜像

Funtuos680驱动: http://pan.baidu.com/s/1skeTncx 说明:凡拓680手绘板驱动光盘镜像.前几天从网上下的不能用,特地找到光盘拷下来一份.就是这个手绘板的驱动,如下图.

UWP 手绘视频创作工具技术分享系列 - 全新的 UWP 来画视频

从2017年11月开始,我们开始规划和开发全新的来画Pro,在12月23日的短视频峰会上推出了预览版供参会者体验,得到了很高的评价和关注度.吸取反馈建议后,终于在2018年1月11日正式推出了全新版本的 UWP App,定名为"来画视频".(根据微软应用商店的命名规则,大家可以继续搜索"来画Pro") 全新版本的 UWP 来画视频,适配了来画平台的手绘视频模板,对创作工具做了全新的改版. 适配来画平台手绘视频模板 来画成立两年多的时间里,一直在积累手绘视频模板,目前

着手一个手游项目的思考

虽然个人阅历有限,但也对端游,页游,手游都有涉及. 目前正值筹备新项目的时候,又面临着技术选型等方面的问题.记录在此,以整理思绪 技术选型 1.前后端的技术选择 前端我觉得要按以下方向来  平台-〉3Dor2D->游戏类型 不同的引擎总是有自己擅长的一面,而强扭的瓜总不可能太甜. 所以,我一向认为,适合的引擎能够更容易做事情. 同时,我也不建议自己撸引擎. 要撸,就自己撸着玩,不要把自己的坑,带到项目中来. 端游,页游就不讨论了,目前很少有公司新开这类型的项目. 我们来说说手游. 对于手游的选择

UWP 手绘视频创作工具 “来画Pro” 技术分享系列

今年年初时,我还在北京,在 Face++,做着人脸识别技术的 Windows 和 Android 端,做着人工智能终将实现世间所有美好的梦.这时的我已经离开 UWP,甚至 C# 很久了,写着 C++ 和 Java,当时真的没想过会再次回到 UWP 的阵营,直到 4 月份的时候,一次很偶然的机会,我的一位微软的朋友,也是 Face++的老朋友找到我询问我在 Face++ 的工作近况,本以为只是很久没联系之后的简单交流,直到他提到:在深圳,有一家叫做 "来画" 创业公司,做手绘视频工具和平

你大概走了假敏捷:认真说说敏捷的实现和问题(手绘版)

作者:薄玉桴,腾讯产品经理,关注项目管理.灵魂画手. 今天你敏捷了没有?"敏捷"在互联网和软件开发领域从涓涓细流逐渐演变为行业潮流,往小了说是改进了开发方法,往大了说是革了瀑布流式的命--把产品开发引向了快速迭代.小步快跑的路线上. 我们使用tapd写 feature,流转.跟踪任务,言必谈敏捷,然而我们是否真的走对了敏捷? 编辑注:tapd 是腾讯内部的敏捷项目管理系统. 1.朋友,你听说过敏捷么? 2.离开敏捷工具,我们怎么敏? 3.设计也要介入敏捷流程? 4.敏捷跟文档是对立的?

你大概走了假敏捷:《手绘敏捷宝典》在此,还不来收!

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由薄玉桴发表于云+社区专栏 今天你敏捷了没有?"敏捷"在互联网和软件开发领域从涓涓细流逐渐演变为行业潮流,往小了说是改进了开发方法,往大了说是革了瀑布流式的命--把产品开发引向了快速迭代.小步快跑的路线上. 我们使用 tapd 写 feature,流转.跟踪任务,言必谈敏捷,然而我们是否真的走对了敏捷?(注:tapd 是腾讯内部的敏捷项目管理系统) . 1.朋友,你听说过敏捷么? 2.离开敏捷工具,我们怎么敏? 3.设计也

做一个手机端页面时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致

最近在做一个手机端页面时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致.大家可以查看这个Demo(记得打开Chrome DevTools). 就如上图所示,你可以发现,原本指定的字体大小是24px,但是最终计算出来的却是53px,看到这诡异的结果,我心中暗骂一句:这什么鬼! 随后开始对问题各种排查:某个标签引起的?某个CSS引起的?又或者是某句JS代码引起的.通过一坨坨的删代码,发现貌似都不是.我不禁又骂,到底什么鬼!不过中间还是发现了一些端倪:当页面中的标签数量或者文本数