You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
//packages\DrawBoard\draw\figureFactory.jsisInPath(ctx,point){for(leti=0;i<this.points.length;i++){// 通过清空子路径列表开始一个新路径的方法。 当你想创建一个新的路径时,调用此方法。ctx.beginPath();//绘制圆弧路径的方法ctx.arc(this.points[i].x,this.points[i].y,this.point_radis,0,Math.PI*2,false);if(ctx.isPointInPath(point.x,point.y)){returni;}}// in the figurethis.createPath(ctx);if(ctx.isPointInPath(point.x,point.y)){return999;}return-1;}
The text was updated successfully, but these errors were encountered:
本项目源于vue2-drawboard,修改了一些原有的bug,更改了选项配置,以及根据业务需求添加了一些功能。
点这里:本文仓库地址
界面:
结构
参数选项
数据格式特殊说明
locationDetile
point
关键流程图
url图片链接
locationDetile位置信息
功能详解
packages\DrawBoard\main.vue
初次渲染
initSize()
确定canvas的宽高等信息window.onresize
,在其中,分别进行了清空画布、开启懒加载、加载url图片、根据数据源画框、选取第一个画框的操作this.image.style.transform = "scale(1, 1) translate(0px, 0px) rotateZ(3600deg)";
。这个根据自己的业务要求修改。loadImage()
)需要时间,所以根据数据源画框drawAll()
这一动作需要在图片加载成功之后。有很多种方式,我这里使用了最笨的定时器。这个根据自己的业务要求修改。新增功能
传入一个坐标点对象,通过计算,根据输入数据渲染图形
通过watch监听器监听
locationDetile
属性:注意:为了避免监听器反复监听,在图片上进行多次标注,所以每次画框都需要清空一次画布
通过
drawAll()
按照原始图片比例,换算成当前画布比例,这样就保证了无论画布显示多大,标注框都能在正确位置:imageScale
:图片实际大小/图片真实大小imagePosX
、imagePosY
:图片偏移量大小;以上三者都是初次渲染时,在加载图片的函数中计算得出。figureFactory()
:新建一个标注框对象,具体对象信息在packages\DrawBoard\draw\figureFactory.js
,这里需要将四个坐标点以及配置信息注入该对象。并且调用对象中的drawMyPoint()
方法去渲染出该标注框。默认在图上画出标注框后,操作状态为修改,并选中第一个标注框
添加一个新增标注标识
isFocus
,当isFocus
为true时,画布自动切换为新增标注状态,并且在上方显示“标注”图标添加一个
point
属性,当point有值传入的时候,可以判断出该位置是否属于已经标注好的框中,并且默认选中修改。isInPath()
The text was updated successfully, but these errors were encountered: