H5 Canvas移动端的自定义画板

8 篇文章 0 订阅

在线测试地址:http://huluwa-test.oss-cn-hangzhou.aliyuncs.com/pdf/index.html#/qrcode

由于技术不好,只能做出这个鬼样子,希望大神们别介意(线上测试是用vue来写的 还处于学习阶段  不会写 还处于开发阶段)

1.这个是线上地址打开的页面

2.这是扫描二维码后手机打开的界面(不要用微信去扫,微信显示不安全  用支付宝或其他的可以出来页面)

3.当手机页面绘制忘了你想要绘制的东西,点击提交 PC端页面就会变成这个样子啦  (达到了及时更新的效果)

 

 Html5的canvas移动端自定义内容画板,还可以将图片保存到本地哦!!!

最近的需求是手机上画好内容,图片保存到本地,百度了很久,好像都没有找到合适的代码,

百度找到的全是支持pc端的,所以我就自己改了下事件,就把只支持pc端的canvas画板改成了只支持wap端的啦

效果图:

 

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>签名画板</title>
    <style>
        *{ padding:0; margin:0;}
        body{ background:#ccc;}
        canvas{ background:#fff; margin:50px 10px;}
    </style>
</head>
<body>
<h1 align="center" style="color:red">只支持移动端,不支持PC端</h>
    <div style="text-align: center">
        <canvas height="600" width="900"  id="canvas">
            <span>亲,您的浏览器不支持canvas,换个浏览器试试吧!</span>
        </canvas>
    </div>
    </div>
    <h1 align="center" style="color:red">只支持移动端,不支持PC端</h>
        <script>

            window.onload = function(){
                var canvas = document.getElementById("canvas");
                var ctx = canvas.getContext("2d");
                ctx.lineWidth = 6.0;
                canvas.addEventListener('touchstart',function(event){//触摸点按下事件
                    if (event.targetTouches.length == 1) {
                        var touch = event.targetTouches[0];
                        ctx.beginPath();
                        ctx.moveTo(touch.clientX-canvas.offsetLeft,touch.clientY-canvas.offsetTop);
                        canvas.addEventListener('touchmove',function (event) {//手机拖动触摸点事件
                            var touche = event.targetTouches[0];
                            ctx.lineTo(touche.clientX - canvas.offsetLeft, touche.clientY - canvas.offsetTop);
                            ctx.stroke();
                        },false)
                        canvas.addEventListener('touchend',function (event) {//手机离开屏幕的事件
                            ctx.closePath();

                        },false)

                    }
                },false)

            }
        </script>
</body>
</html>

 

代码:https://github.com/niezhiliang/prompt-response

 

原文章地址:http://blog.csdn.net/qq_38082304/article/details/78144153

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
以下是一个基于Vue的移动端涂鸦画板的实现方法: 1. 在Vue组件中,使用canvas元素创建画布,并设置画布的宽度和高度。 ```html <template> <div class="canvas-container"> <canvas ref="canvas" :width="canvasWidth" :height="canvasHeight"></canvas> </div> </template> ``` 2. 在组件的data选项中,定义画布的宽度和高度,以及画笔的颜色和粗细。 ```javascript export default { data() { return { canvasWidth: 300, canvasHeight: 300, brushColor: '#000000', brushSize: 5, isDrawing: false } } } ``` 3. 在组件的mounted钩子函数中,获取canvas元素和2D上下文,并添加touch事件监听器。 ```javascript export default { mounted() { const canvas = this.$refs.canvas this.ctx = canvas.getContext('2d') canvas.addEventListener('touchstart', this.handleTouchStart) canvas.addEventListener('touchmove', this.handleTouchMove) canvas.addEventListener('touchend', this.handleTouchEnd) }, methods: { handleTouchStart(e) { this.isDrawing = true const canvasX = e.changedTouches[0].clientX - e.target.parentNode.offsetLeft const canvasY = e.changedTouches[0].clientY - e.target.parentNode.offsetTop this.ctx.beginPath() this.ctx.moveTo(canvasX, canvasY) }, handleTouchMove(e) { if (this.isDrawing) { const canvasX = e.changedTouches[0].clientX - e.target.parentNode.offsetLeft const canvasY = e.changedTouches[0].clientY - e.target.parentNode.offsetTop this.ctx.lineTo(canvasX, canvasY) this.ctx.strokeStyle = this.brushColor this.ctx.lineWidth = this.brushSize this.ctx.stroke() } }, handleTouchEnd() { this.isDrawing = false } } } ``` 4. 在组件的template中,添加控制画笔颜色和粗细的按钮。 ```html <template> <div class="canvas-container"> <canvas ref="canvas" :width="canvasWidth" :height="canvasHeight"></canvas> <div class="controls"> <button @click="brushColor = '#000000'">Black</button> <button @click="brushColor = '#ff0000'">Red</button> <button @click="brushColor = '#00ff00'">Green</button> <button @click="brushColor = '#0000ff'">Blue</button> <input type="range" v-model="brushSize" min="1" max="20"> </div> </div> </template> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值