/// <inheritdoc/> public void AddDirty(IVisual visual) { if (visual.Bounds != Rect.Empty) { var m = visual.TransformToVisual(_root); if (m.HasValue) { var bounds = new Rect(visual.Bounds.Size).TransformToAABB(m.Value); //use transformedbounds as previous render state of the visual bounds //so we can invalidate old and new bounds of a control in case it moved/shrinked if (visual.TransformedBounds.HasValue) { var trb = visual.TransformedBounds.Value; var trBounds = trb.Bounds.TransformToAABB(trb.Transform); if (trBounds != bounds) { _renderRoot?.Invalidate(trBounds); } } _renderRoot?.Invalidate(bounds); } } }
private void OnRenderLoopTick(object sender, EventArgs e) { if (_dirty) { _root.Invalidate(new Rect(_root.ClientSize)); } }
/// <inheritdoc/> public void AddDirty(IVisual visual) { if (visual.Bounds != Rect.Empty) { var m = visual.TransformToVisual(_root); if (m.HasValue) { var bounds = new Rect(visual.Bounds.Size).TransformToAABB(m.Value); _renderRoot?.Invalidate(bounds); } } }