html5画板的使用方法和功能,canvas实现的画板功能

闲来无事正好团队准备做一个画板相关的项目,虽然我不在其中但是对这个画板还是蛮有兴趣的。

主要是通过canvas这个标签加上鼠标的一些相关事件来实现的。

中间有碰到过一个bug

canvas的画板大小不能通过css来设置,css会缩放大小导致获取到的点坐标是正确的但是在canvas上显示的位置确是有偏差的

这里的解决办法是直接在canvas标签上的width和height设置长和宽。

清空canvas

export default {

name: "canvas",

components: {},

data() {

return {};

},

mounted() {

this.init();

},

methods: {

init() {

let canvas = this.$refs.canvas

let ctx = canvas.getContext("2d")

let startPosition = []

let isdraw = false

ctx.fillStyle = "#999999"

ctx.fillRect(0, 0, 500, 300)

ctx.lineWidth = 1

canvas.onmousedown = res => {

//指针在canvas上点击

isdraw = true;

startPosition[0] = res.offsetX

startPosition[1] = res.offsetY

drawLine(res.offsetX,res.offsetY)

console.log(res)

};

canvas.onmouseup = res => {

//指针在canvas上放开

if (!isdraw) return;

clear()

};

canvas.onmouseout = res => {

//指针移出canvas

if (!isdraw) return;

clear()

};

canvas.onmousemove = res => {

//指针在canvas移动

if (!isdraw) return;

drawLine(res.offsetX,res.offsetY)

};

function drawLine(X,Y) {

//画图

if (!isdraw) return;

ctx.beginPath();

console.log(X,Y)

ctx.moveTo(startPosition[0],startPosition[1])

startPosition = [X,Y]

ctx.lineTo(X,Y);

ctx.stroke();

ctx.save()

}

function clear() {

isdraw = false;

startPosition = []

}

},

resetCanvas() {

//清空canvas

let canvas = this.$refs.canvas

let ctx = canvas.getContext("2d")

let startPosition = []

let isdraw = false

ctx.fillStyle = "#999999"

ctx.fillRect(0, 0, 500, 300)

}

}

};

canvas {

}

哈哈字有点丑~~~但是问题不大!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值