gpt4 book ai didi

dart - 如何防止 RenderBox 覆盖其他小部件?

转载 作者:IT王子 更新时间:2023-10-29 07:22:01 27 4
gpt4 key购买 nike

如果我在屏幕上的任何地方都有一个 RenderBox(以 LeafRenderObjectWidget 的形式),它总是会被调用一个从 开始的 PaintingContext >偏移量(0.0, 0.0)。这可以通过翻译 Canvas 或使用 RenderShiftedBox 来解决。为了方便。

现在,RenderBox 将从其实际位置 绘制。这对我来说很好,但是,我想限制我的 RenderBox 在其他小部件上绘制,即使 Canvas 操作发生在这些边界之外也是如此。

我该如何处理?我考虑过剪切 LeafRenderObjectWidget,但我不知道我的 RenderBox 区域将从哪里开始。

如果之前不清楚,我拥有确定 RenderBox 开始和结束位置所需的一切。我从作为 paint 中的参数提供的 Offset 获取上部位置,并且我有大小,因为我在 performResize 中设置了它,但是我不知道如何使用它进行剪辑,因为该信息在 RenderBox 中。

最佳答案

有几种可能性:

  • 将您的 RenderBox 包装到 ClipRect 中。简单但有点作弊

  • RenderBox

    paint 函数中使用 PaintingContext.pushClipRect

下面剪辑一幅画不溢出RenderBox

@override
void paint(PaintingContext context, Offset offset) {
context.pushClipRect(
needsCompositing, offset, Rect.fromLTWH(0, 0, size.width, size.height),
(context, offset) {
// TODO: do some painting
});
}

关于dart - 如何防止 RenderBox 覆盖其他小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55105997/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com