我正在创建一些自定义 FireMonkey GUI 控件。组件需要更新以响应用户交互。VCL 控件可以调用 Invalidate() 将其放入队列中进行重绘。FireMonkey 有等效的方法吗?
FireMonkey 控件具有 Repaint() 方法,但 AFAICT 会强制控件立即重新绘制。在某些情况下,队列类型系统会更合适。
我正在创建一些自定义 FireMonkey GUI 控件。组件需要更新以响应用户交互。VCL 控件可以调用 Invalidate() 将其放入队列中进行重绘。FireMonkey 有等效的方法吗?
FireMonkey 控件具有 Repaint() 方法,但 AFAICT 会强制控件立即重新绘制。在某些情况下,队列类型系统会更合适。
Control.InvalidateRect(RectF(0,0,width,height));
FireMonkey 的 TControl.Repaint 最终调用了 TPlatformWin.ReleaseWindow。如果 Form.Transparency 为 false,则此方法调用 Windows InvalidateRect 函数,就像 VCL 的 TControl.Invalidate 一样。
所以 Repaint 实际上和 VCL 的 Invalidate 做的事情是一样的,除非 Form.Transparency=true。