uniapp中使用canvas根据两点坐标画出路径

效果图:此处坐标为(2,4)和(3,5)
在这里插入图片描述
html
设定canvas-id和类名

<canvas canvas-id="myCanvas" class="content"></canvas>

data

		data() {
			return {
				width: 0,
				height: 0,
				startX: 2,
				startY: 4,
				endX: 3,
				endY: 5
			}
		},
		onLoad() {
			this.getInfor();
			this.drawline();
		}

methods
1.为了在不同的设备里显示一样的比例,获取屏幕的宽高

getInfor() {
				var that = this;
				uni.getSystemInfo({
					success: function(res) {
						console.log(res);
						that.width = res.windowWidth;
						that.height = res.windowHeight;
					}
				})
			}

2.画出格子

drawline() {
				var w = this.width
				const ctx = uni.createCanvasContext('myCanvas')//传入canvas-id
				//横线
				for (var i = 0; i <= 10; i++) {
					ctx.moveTo(0, w / 10 * i)
					ctx.lineTo(w, w / 10 * i)
				}
				//竖线
				for (var i = 0; i <= 10; i++) {
					ctx.moveTo(w / 10 * i, 0)
					ctx.lineTo(w / 10 * i, w)
				}
				//保证坐标落在相应位置
				ctx.moveTo(w/10*this.startX-w/20,w/10*this.startY-w/20)
				ctx.lineTo(w/10*this.endX-w/20,w/10*this.endY-w/20)
				ctx.stroke()
				ctx.draw()
			}

踩坑点:未设置canvas的宽高导致方格图不完整
css

.content {
		width: 100vw;
		height: 100vw;
		margin: 0;
		padding: 0;
	}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在uniapp实现canvas击多路径,你可以使用类似于在普通HTML页面的方法。以下是一个简单的示例代码: ``` <template> <canvas canvas-id="myCanvas" @touchstart="onTouchStart" @touchmove="onTouchMove"></canvas> </template> <script> export default { methods: { onTouchStart(e) { // 获取canvas元素 var canvas = uni.createCanvasContext('myCanvas', this); // 获取触摸canvas坐标 var x = e.touches[0].x; var y = e.touches[0].y; // 绘制路径 canvas.beginPath(); canvas.moveTo(x, y); // 保存起坐标到data this.setData({ startX: x, startY: y, points: [{x: x, y: y}] }); }, onTouchMove(e) { // 获取canvas元素 var canvas = uni.createCanvasContext('myCanvas', this); // 获取触摸canvas坐标 var x = e.touches[0].x; var y = e.touches[0].y; // 绘制路径 canvas.lineTo(x, y); canvas.stroke(); // 保存坐标到data var points = this.data.points; points.push({x: x, y: y}); this.setData({ points: points }); } } } </script> ``` 以上代码,我们在template使用canvas标签来创建一个canvas元素,并且给它设置了一个canvas-id,这是为了在js代码获取canvas元素。在js代码,我们使用uni.createCanvasContext()方法来获取canvas元素,然后使用canvas绘制方法来绘制路径。 在touchstart事件,我们使用canvas.beginPath()方法开启一条新的路径,并使用canvas.moveTo()方法将起设置为当前触摸坐标。然后,我们保存起坐标到data,以便在touchmove事件使用。在touchmove事件,我们使用canvas.lineTo()方法将当前触摸坐标连接到上一个,形成一条连续的路径,并使用canvas.stroke()方法将路径绘制出来。同时,我们也保存当前坐标到data,以便在之后继续绘制路径使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值