Primary WPF APIs:
OnRender(DrawingContext)DrawingVisualAdorner/AdornerLayerPrimary Avalonia APIs:
Control.Render(DrawingContext)DrawingContextAdornerLayer and overlay patterns| WPF | Avalonia |
|---|---|
OnRender custom control draw |
Render(DrawingContext) |
DrawingVisual scene helpers |
custom controls/compositor visuals (no direct public DrawingVisual control API) |
AdornerLayer.GetAdornerLayer(...) |
AdornerLayer overlay patterns |
WPF C#:
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
dc.DrawRectangle(Brushes.Black, null, new Rect(0, 0, ActualWidth, ActualHeight));
}
Avalonia XAML:
<local:OverlayMeter xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApp.Controls"
Width="220"
Height="24" />
using Avalonia;
using Avalonia.Controls;
using Avalonia.Media;
public sealed class OverlayMeter : Control
{
public override void Render(DrawingContext context)
{
base.Render(context);
context.FillRectangle(Brushes.Black, Bounds);
context.DrawRectangle(null, new Pen(Brushes.Gray, 1), new Rect(0, 0, Bounds.Width, Bounds.Height));
}
}
Adorner layer usage should be constrained to focused overlays and validation/focus visuals.
Bounds.