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

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

<!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,并没有相应匹配的移出的事件。

时间: 2025-01-22 15:16:16

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

一个手绘板,兼容移动端

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

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

背景: 用户在使用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 来画视频,适配了来画平台的手绘视频模板,对创作工具做了全新的改版. 适配来画平台手绘视频模板 来画成立两年多的时间里,一直在积累手绘视频模板,目前

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

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

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

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

UI设计培训中所需要的手绘能力

一.漫画 主要不是绘画能力,更重分镜头,叙事能力,脚本编写能力,很多画的不好,但依然存活很多年的漫画还真不少,甚至可以证明,绘画能力的底线可以很低. 二.游戏原画 虽然工作内容是画画,但游戏世界观多数是架空世界观,历史及文明的视觉搭建.所以对历史符号,架空世界观,产品类型,研发流程实现等行业知识更重要. 三.影视 跟游戏差不多,但是你设计出来的东西都能实现.场景,道具,服装,你对施工,材料,拍摄效果,后期等相关知识得有足够了解.那些看起来都是画画的工作,其实绘画只是表达手段.是最最基础的一个职业

着手一个手游项目的思考

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

5分钟编写一个PHP留言板程序

1.创建数据库 以下为sql代码,推荐采用phpmyadmin创建数据库. CREATE DATABASE IF NOT EXISTS db_liuyan; USE db_liuyan; CREATE TABLE ly( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(20) NOT NULL, email VARCHAR(100) NOT NULL, content TEXT NOT NULL, date TIMEST