Просто построенный из немного доказательства концепции, и я получил это работает!
Вот XAML:
<ScrollViewer ZoomMode="Enabled" MinZoomFactor="1" MaxZoomFactor="7" HorizontalScrollBarVisibility="Visible" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
VerticalScrollBarVisibility="Visible" Height="275" Width="525" BorderBrush="LightBlue" BorderThickness="2">
<Border BorderBrush="Black" BorderThickness="2" Height="250" Width="500">
<InkCanvas x:Name="InkCanvas" Loaded="InkCanvas_Loaded"/>
</Border>
</ScrollViewer>
Я завернул Ink Canvas и ScrollViewer с границами, так что вы можете увидеть, где они находятся по отношению к другу другу. Вот метод InkCanvas_Loaded, а также:
private void InkCanvas_Loaded(object sender, RoutedEventArgs e)
{
InkCanvas canvas = sender as InkCanvas;
//Set inputs
canvas.InkPresenter.InputDeviceTypes =
Windows.UI.Core.CoreInputDeviceTypes.Mouse |
Windows.UI.Core.CoreInputDeviceTypes.Pen |
Windows.UI.Core.CoreInputDeviceTypes.Touch;
// Set initial ink stroke attributes.
InkDrawingAttributes drawingAttributes = new InkDrawingAttributes();
drawingAttributes.Size = new Size(10, 10);
drawingAttributes.Color = Windows.UI.Colors.Black;
drawingAttributes.IgnorePressure = false;
drawingAttributes.FitToCurve = true;
canvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes);
}
Вы можете прокручивать, удерживая контроль и перемещение средней кнопки мыши вверх или вниз. Если вы находитесь на сенсорном экране, вы можете ущипнуть/развернуть, чтобы увеличить/уменьшить масштаб!