Primary WinUI APIs:
CompositionTarget.RenderingCompositor, SpriteVisual, visual layer effectsPrimary Avalonia APIs:
Control.Render(DrawingContext)Visual.InvalidateVisual(), AffectsRender<T>(...)WinUI supports retained rendering and composition effects through the Windows composition layer. In most apps, rendering changes should remain declarative (templates, states, theme resources).
Avalonia renders visual-tree updates and supports custom rendering via Render(DrawingContext) plus compositor paths for advanced scenarios.
WinUI XAML:
<Canvas x:Name="RenderHost" Width="220" Height="24" />
WinUI C#:
CompositionTarget.Rendering += (_, __) =>
{
MeterLevel = Math.Clamp(MeterLevel + 0.01, 0.0, 1.0);
};
Avalonia XAML:
<local:RenderHostControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApp.Controls"
Width="220"
Height="24" />
Avalonia C#:
var timer = new DispatcherTimer(TimeSpan.FromMilliseconds(16), DispatcherPriority.Render, (_, _) =>
{
MeterLevel = Math.Clamp(MeterLevel + 0.01, 0.0, 1.0);
meterControl.InvalidateVisual();
});
timer.Start();
Avalonia custom control draw:
public override void Render(DrawingContext context)
{
base.Render(context);
context.FillRectangle(Brushes.Black, Bounds);
}