如何在拖动对象时检测画布的中心线以使其居中
How to detect center line of a canvas to center a object when it dragged?
这个问题属于fabricJS和canvas。当我把一个物体拖到画布上时,我需要检测中心线并捕捉到它。我在这个问题中找到了一些类似的方法。但它涉及CCD_ 1元素。我需要处理画布的中心线。我是怎么做到的?
画布或织物的中心点。Rect
如果你有一个这样定义的矩形:
var rect = {x:0, y:0, width:50, height:30};
你可以这样计算矩形的中心点:
var centerX = x+width/2;
var centerY = y+height/2;
两点之间的中点(=线段的中点)
如果你有这样定义的线段:
var line={ x0:0, y0:50, x1:100, y1:50 }
你可以这样计算线段的中点:
var dx = x1-x0;
var dy = y1-y0
var midX = x0 + dx*0.50;
var midY = y0 + dy*0.50;
您可以使用moving
选项手动定义捕捉功能。请尝试以下操作。
'object:moving' : function(e){
var objCenter = e.target.getLeft() + (e.target.getWidth()/2);
var targetLine = canvas.left+(canvas.width/2);
if(objCenter > targetLine-10 && objCenter < targetLine+10){
e.target.left = targetLine - (e.target.getWidth()/2) ;
}else{
e.target.setOpacity(1);
}
`
相关文章:
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 删除对HTML元素的拖动
- jQuery UI可排序-多连接列表拖动
- 禁用SVG拖动
- 旋转后拖动对象
- JQuery UI可拖动潜水与滚动棒到鼠标
- jsPlumb-拖动克隆而不进行复制
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- 如何使元素在可拖动元素内可单击
- 如何在使用Kinetic拖动同一对象后,在旋转动画中保持先前的偏移
- 在d3中拖动一条线
- 使元素在iframe中可拖动
- 通过拖动可以更改三维模型对象在Three.js场景中的位置
- 如何使所有绘制的(矩形、圆形、直线、多边形)都可拖动?纯JS
- 拖动开始时更改可拖动元素的大小
- 如何正确拖动jqgrid编辑表单
- 交互.js拖动的项目移动到顶部
- 拖动&删除Fullcalendar.io资源-更新视图
- 如何在侦听器之后添加可拖动功能
- 如何在拖动对象时检测画布的中心线以使其居中