html canvas画布 相关问题

创建画布实现即时绘画画板功能项目中遇见的一些问题
1:矩形绘画工具
描述:矩形框连接四个点,在用onmousedown和onmousemove绘制时内部无法清空内部以绘制的图形,有两个思路 1在绘制过程中先调用closePath清除以起点到终点的以整块区域,2本身是在画线,就清除上一次所绘制的四个线条
不得一提的是,无论1还是2 ,在清除过程中,必然会清除原本在画布上绘制的一些图形,第二种虽然不会出现大面积空白,但在原来图像上会现以线宽为宽度的断点;
引入分层概念?
以解决 利用分层

2:画布图形模糊,写入1px 实际效果缺宽很多

这里的线宽其实是1
这里的一个基本的小格其实是1,但线条明显糊掉了

//制定的样式
canvas {
				border: 2px solid #CCCCCC;
				width: 500px;
				height: 300px;
				display: block;
				margin: 0 auto;
			}
//制定的线宽
ctx.lineWidth =1;

原理分析:画布的默认宽高是300px*150px,样式写入的宽高实际是在本基础上对画布进行了拉伸,而内部的单位长度相应也被拉伸,所以其实是出现了变形;
解决:运用画布 准备工作使用js也改变画布宽高与css相同

mycan.width = 500;
mycan.height = 300;

在这里插入图片描述
同一张图,内部单位长度明显小了//还好我位置都是传入的,不用改太多

3.鼠标落点位置相对于画布产生偏差
描述:由于项目原因,在绘制一个棋盘时需要计算鼠标点击位置判断落子位置
在这里插入图片描述
这里设置单位长度,1u=16,左边留出了2u的边界,在判定鼠标边界时第一个点的位置变成了49,

在这里插入图片描述
同样1u=10 2u却到了30
在这里插入图片描述
代码段中 鼠标事件用到的计算代码段和画布中 的画图属性是同一条

console.log("鼠标落点"+xposit,yposit)
console.log("单位长度"+options.basnumSet.unit)
console.log("右边界点"+ parseInt(2*options.basnumSet.unit+options.basnumSet.unit*options.basnumConst._BLOCKNUM) )

具体原因可能由于画布本身属性,这里解决办法先想办法换算顶替上

下班了不写了

待续

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值