| title |
|---|
Quickstart: ZoomBorder |
Create a zoomable container by wrapping your content in Avalonia.Controls.PanAndZoom.ZoomBorder.
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:paz="using:Avalonia.Controls.PanAndZoom">
<paz:ZoomBorder x:Name="ZoomBorder"
Stretch="None"
ZoomSpeed="1.2"
Background="SlateBlue"
ClipToBounds="True"
Focusable="True">
<Canvas Background="LightGray" Width="300" Height="300">
<Rectangle Canvas.Left="100" Canvas.Top="100" Width="50" Height="50" Fill="Red" />
</Canvas>
</paz:ZoomBorder>
</Window>ZoomBorder.ZoomChanged += (_, e) =>
{
Debug.WriteLine($"Zoom: {e.ZoomX}, {e.ZoomY} Offset: {e.OffsetX}, {e.OffsetY}");
};
ZoomBorder.Fill();
ZoomBorder.Uniform();
ZoomBorder.ResetMatrix();PanButton: choose which mouse button starts panningEnablePanandEnableZoom: feature gates for interactionEnableGestures: attach pinch and scroll recognizersStretch: initial fit policyBoundsMode: how content should be constrained when panning
ZoomBorder exposes built-in commands that can be bound directly in XAML:
<StackPanel>
<Button Content="Zoom In" Command="{Binding #ZoomBorder.ZoomInCommand}" />
<Button Content="Reset" Command="{Binding #ZoomBorder.ResetCommand}" />
<Button Content="Fit" Command="{Binding #ZoomBorder.FitCommand}" />
</StackPanel>