如何防止RenderBox绘制其他小部件?

问题描述 投票:0回答:1

如果我在屏幕上的任何地方都有RenderBox(以LeafRenderObjectWidget的形式),它将始终被调用PaintingContext开始于Offset(0.0, 0.0)。这可以通过翻译Canvas或使用RenderShiftedBox来方便。

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

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

如果以前不清楚,我有我需要的一切来确定RenderBox开始和结束的位置。我从Offset作为参数提供的paint的上部位置,我有大小,因为我在performResize设置它,但我不知道如何剪辑使用这个因为该信息在RenderBox内。

dart flutter flutter-layout
1个回答
1
投票

有几种可能性:

  • 把你的RenderBox包裹成ClipRect。容易但有点作弊
  • PaintingContext.pushClipRectpaint函数中使用RenderBox

以下剪辑一幅画不要溢出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
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.