The following is a XAML page that allows the user to draw on it. This was written and tested under a Windows 10 desktop application, but should work for WPF. Here’s the XAML:
<Grid>
<Border>
<Canvas PointerPressed="Canvas\_PointerPressed" PointerMoved="Canvas\_PointerMoved"
PointerReleased="Canvas\_PointerReleased"
Background="Orange" Name="Canvas" />
</Border>
</Grid>
The background is a different colour to identify the canvas.
There’s the code to allow drawing:
Path \_currentPath;
private void Canvas\_PointerPressed(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{
\_currentPath = new Path
{
Data = new PathGeometry
{
Figures = { new PathFigure
{
StartPoint = e.GetCurrentPoint((UIElement)sender).Position,
Segments = { new PolyLineSegment() }
}}
},
Stroke = new SolidColorBrush(Colors.Black),
StrokeThickness = 5
};
Canvas.Children.Add(\_currentPath);
}
private void Canvas\_PointerMoved(object sender, PointerRoutedEventArgs e)
{
if (\_currentPath == null) return;
var pls = (PolyLineSegment)((PathGeometry)\_currentPath.Data).Figures.Last().Segments.Last();
pls.Points.Add(e.GetCurrentPoint((UIElement)sender).Position);
}
private void Canvas\_PointerReleased(object sender, PointerRoutedEventArgs e)
{
\_currentPath = null;
}
As you can see, it doesn’t do anything for my drawing ability:
It’s all the code behind and, while I typically shy away from this, it seems to fit well for an application such as this (as the drawing relates more to the view than to anything else).