如果我在屏幕上的任何地方都有一个RenderBox
(以LeafRenderObjectWidget
的形式),它将始终以从PaintingContext
开始的Offset(0.0, 0.0)
进行调用。为了方便起见,可以通过翻译Canvas
或使用RenderShiftedBox
来解决此问题。
现在,RenderBox
将从其实际位置绘画。这对我来说很好用,但是,即使画布操作发生在这些边界之外,我也想限制我的RenderBox
不能覆盖其他小部件。
我该如何处理?我曾考虑过裁剪LeafRenderObjectWidget
,但不知道RenderBox
的区域将从何处开始。
如果以前不清楚,我将确定RenderBox
的开始和结束位置。我从Offset
中作为参数提供的paint
获得了较高的位置,并且具有尺寸,因为我在performResize
中进行了设置,但是我不知道如何使用它进行裁剪因为该信息位于RenderBox
内部。
答案 0 :(得分:1)
有几种可能性:
将您的RenderBox
换成ClipRect
。简单但有点作弊
在PaintingContext.pushClipRect
的{{1}}函数中使用paint
以下剪贴画不会溢出RenderBox
RenderBox
答案 1 :(得分:0)
如已接受的答案中所述,用 ClipRect 包装您的 RenderBox 效果很好!太简单了,我都忽略了。这是代码的样子
Container(
/*Code for container*/
child: ClipRect(
child: CustomPaint(
painter: MyPainter(),
size: Size.infinite,
),
),
),