【发布时间】:2021-08-22 20:26:49
【问题描述】:
我正在用 Flutter 开发一个图像编辑器。为此,我需要添加一个将图像和文本动态添加到屏幕的功能。它们中的每一个都应该能够独立地缩放、定位和旋转。应该有一个像 word 或 Photoshop 中的锚点来指示活动图像并缩放和旋转它们(图像中的示例)。图像应通过拖放定位。
小部件应该能够在 x、y 和 xy 中缩放。
我尝试过的事情
1.matrix_gesture_detector 我认为这个包没有仅在 x 或仅在 y 中缩放的选项。它在 x 和 y 中统一缩放小部件。用图像中类似的东西制作活动图像也很困难。如果我们将活动图像包装在图像中的自定义小部件中,小部件也会随图像缩放。例如,如果缩放时边框厚度为 1 px,则厚度也会缩放,使其连线。
2。使用变换小部件。 当使用变换小部件时,上面提到的小部件指示问题,图像周围的活动图像也随小部件缩放。同样在缩放时的变换中,我必须根据所选缩放动态调整对齐或原点。例如,如果我只想在顶部方向缩放,我必须将锚点设置为底部中心。但是这里的锚点是相对于小部件的初始大小设置的。所以当改变锚点缩放到不同的方向时,widget会跳转到相对于widget原始大小的对应对齐位置。
3.使用 Positioned.fromRect 我已经从 StackOverflow 尝试过这个解决方案 Resizing a rotated container in flutter,但这里的问题是解决方案仅适用于一个小部件。所以我把它包裹在一个堆栈中。但是当旋转时,它会旋转整个堆栈。堆栈采用画布的高度和宽度。所以变换小部件的锚点的对齐是相对于那个而不是相对于图像。
注意:我正在使用 Getx 进行状态管理。如果你能在getx中提供解决方案,那是首选。
【问题讨论】:
-
@JacobPhillips 是的。我已经试过了。如问题中所述,一种或另一种方式存在问题。所以我需要一个详细的解释。
-
@JacobPhillips。旋转整个堆栈设置相对于堆栈的旋转锚点。正确的?但是我们只需要设置相对于 Widget 项的旋转锚点。不是吗?
-
我想我已经试过了。但是如何显示活动层然后/
-
@SanketVekariya 我尝试过这样的事情(问题第三点的链接)。但这仅适用于一个小部件。正确的?此外,它不显示旋转。我需要多个小部件进行旋转调整大小和定位。
-
@SanketVekariya 很好。但是示例中的缩放功能并没有完全按照我的预期运行。在示例中,当您通过单击底部绿点进行缩放时,它相对于图像的中心进行缩放(即在两侧、顶部和底部的缩放)。我只需要缩放我们拖动的一侧。 (类似于此链接stackoverflow.com/questions/64410463/…)。
标签: flutter dart flutter-layout