如果我在屏幕上的任何地方都有RenderBox
(以LeafRenderObjectWidget
的形式),它将始终被调用PaintingContext
开始于Offset(0.0, 0.0)
。这可以通过翻译Canvas
或使用RenderShiftedBox
来方便。
现在,RenderBox
将从其实际位置进行绘制。这对我来说很好,但是,我想限制我的RenderBox
从绘制其他小部件,即使画布操作发生在这些边界之外。
我该如何处理?我想要剪切LeafRenderObjectWidget
,但我不知道我的RenderBox
的区域将从哪里开始。
如果以前不清楚,我有我需要的一切来确定RenderBox
开始和结束的位置。我从Offset
作为参数提供的paint
的上部位置,我有大小,因为我在performResize
设置它,但我不知道如何剪辑使用这个因为该信息在RenderBox
内。
有几种可能性:
RenderBox
包裹成ClipRect
。容易但有点作弊PaintingContext.pushClipRect
的paint
函数中使用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
});
}