【发布时间】:2015-11-19 09:23:54
【问题描述】:
我希望能够单击一个对象,并将其缩放到画布视口中的边界框。我该如何做到这一点?请参阅 http://jsfiddle.net/tinodb/qv989nzs/8/ 了解我想要工作的内容。
Fabricjs 的画布具有 zoomToPoint 方法(关于该方法的文档说:Sets zoom level of this canvas instance, zoom centered around point),但这并不以给定点为中心,但它确实适用于滚动缩放。见http://jsfiddle.net/qv989nzs/
我尝试了其他几种方法,例如使用canvas.setViewportTransform:
// centers a circle positioned at (200, 150)??
canvas.setViewportTransform([2, 0, 0, 2, -250, -150])
但我找不到setViewportTransform 的最后两个参数与对象的位置之间的关系。
(顺便说一句,另一个问题是第一个示例小提琴,缩放仅在第一次点击时起作用。为什么会这样?)
【问题讨论】:
-
zoomToPoint相对于给定点进行缩放,就像在地图上放大和缩小一样。它不会自动将给定点居中。这应该让你开始。此外,您可能想要包装循环的内部内容,查看不同对象单击时的点引用。 -
“相对于给定点”,你到底是什么意思?如果我缩放到 (100, 100) 处的某个点,它是否会将左角向上和向左移动 100 像素?这似乎不起作用。
-
我将点创建包装在一个函数中,但第二次单击仍然不起作用。
zoomToPoint在缩放级别与我猜想的当前级别没有不同时不执行任何操作(尝试将zoom更改为 1,然后在第一次单击时也没有任何反应)。
标签: javascript canvas fabricjs