首页 > 解决方案 > 什么时候需要 InvalidateSurface()?

问题描述

在下面的示例中,OnTouchEffectAction 包含 canvas.InvalidateSurface()。OnCanvasViewPaintSurface 包含 convas.DrawPath()。

问题:

  1. 为什么 OnTouchEffectAction 需要 InvalidateSurface()?
  2. 为什么绘制后不调用 InvalidateSurface?

屏幕截图在这里

完整的代码在这里给出

标签: xamarin

解决方案


InvalidateSurface导致引发PainSurface事件,该事件调用OnCanvasViewPaintSurface. InvalidateSurface是您告诉 Skia 您已对画布进行更改并且需要刷新其 UI 的方式。 OnTouchEffectAction正在向画布添加新的折线,因此调用InvalidateSurface会导致画布用这些新线重绘。


推荐阅读