当调整另一个图像的大小时,KineticJS会重新计算图像的位置
KineticJS recalculate position of image when another is resized
好吧,这更像是一个数学问题,但它使用的是我开发的KineticJs代码。目前我有一个舞台和层次,这一切都设置得很好。一旦一个特定的组被调整了大小(让我们称之为背景),我就使用一个函数来更新另一个组的位置(好吧,称之为前景),使用
.move ({x: (calculation), y: (calculation)})
方法。我希望前景重新定位,使其在调整大小后在背景中的位置不变。ie:它随着bg移动,如果bg上有一个小圆圈,我把前景放在这个圆圈里,调整大小后前景应该仍然在圆圈里
我的变量如下(数字不应该仅仅代表什么):
bgX = the background width before resize.
bgXfinal = the background width after resize.
bgY = the background height before resize.
bgYfinal = the background height after resize.
fgX = foreground position x (from topleft point) within the bg.
fgY = foreground position y (from topleft point) within the bg.
背景通过这个数学计算按比例调整大小(以及其他计算,但这是主要部分):
bgYfinal = bottomLeft.getY() - topLeft.getY();
bgXfinal = image.getWidth() * bgYfinal / image.getHeight();
我需要的是.move()的x和y位置的坐标计算;方法,我无法计算出来,无论出于什么原因,我都无法计算出来。无论图像是变大还是变小,计算都应该有效,因为它缩小的结果将给出负的x/y调整,而它放大的结果将提供正的x/y调整。
目前我有:
// bg size is increasing
if ( bgX < bgXfinal ) {
group.move( { x: (bgXfinal - bgX), y: (bgYfinal - bgY) } );
}
// bg size is decreasing
if ( bgX > bgXfinal ) {
group.move( { x: (bgXfinal - bgX), y: (bgYfinal - bgY) } );
}
显然,这是不正确的,因为获取差异并将其添加到位置会使前景按预期移动,但移动太大。如果我除以2,把前景正好放在中心,它就起作用了。但是我需要它适用于背景上的任何位置,如果你精通数学的Id喜欢在背景增加/减少时确定前景位置的正确计算
好吧,经过一些研究,我发现KineticJs中有一种方法支持这种功能。setPosition();该方法可以基于从包含图像的大小调整提供的计算来重置内部图像的位置。这里的数学:
var x = innerGroup.getPosition().x,
y = innerGroup.getPosition().y,
newX = x / oldX * newWidth,
newY = y / oldY * newHeight;
innerGroup.setPosition( { x: newX, y: newY } );
innerLayer.draw();
将其放入重新调整大小时重新计算容器尺寸的代码部分,内部组的位置将与外部组新调整大小的尺寸成比例变化。
相关文章:
- 在通过child.print()打印之前,我如何等待图像加载到我的新窗口中
- CKEditor中没有从计算机上传图像的选项
- 以编程方式将fabric-js-canvas的图像替换为hq图像,并重新计算其他对象的坐标和大小
- 如何从地图导出图像并将其插入到新的PDF文件中
- HTML5拖放新图像并替换Div中的现有图像
- 如何在 javascript 替换新图像/标题后正确显示 css 工具提示
- 打开新窗口进行打印时不显示 JavaScript 图像
- 如何以用户友好的方式在计算机上保存从画布转换的图像
- jQuery:裁剪以删除图像数据并替换为新数据
- JavaScript计算不同于Firefox的图像尺寸(?)
- 如何在新的分区中显示ImgAreaSelect选择的图像
- 如何使用HTML画布getImageData()计算图像上的颜色
- 通过图像计数计算图像位置
- JQuery图像大小计算没有'不能在Chrome/Safari中工作
- Javascript图像大小计算
- 将图像从计算机上传到Fabric.JS Canvas
- 一个错误事件添加一个新类并计算它替换图像源的次数
- 在加载图像后计算图像尺寸时出现问题
- 你能在jQuery中使用length()按图像名称计算元素吗
- 给定原始图像的分辨率,如何在缩放后使用javascript计算新的分辨率