Чтобы нарисовать прямоугольник выделения поверх изображения, вы могли бы просто иметь элемент Path с RectangleGeometry поверх изображения, например:
<Canvas>
<Image Source="C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"
MouseLeftButtonDown="ImageMouseLeftButtonDown"
MouseLeftButtonUp="ImageMouseLeftButtonUp"
MouseMove="ImageMouseMove"/>
<Path x:Name="selectionPath" Stroke="Magenta" StrokeThickness="2"/>
</Canvas>
С этими обработчиками событий:
private Point mousePos;
private void ImageMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var image = (Image)sender;
image.CaptureMouse();
mousePos = e.GetPosition(image);
selectionPath.Data = new RectangleGeometry(new Rect(mousePos, mousePos));
}
private void ImageMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var image = (Image)sender;
image.ReleaseMouseCapture();
selectionPath.Data = null;
}
private void ImageMouseMove(object sender, MouseEventArgs e)
{
var rect = selectionPath.Data as RectangleGeometry;
if (rect != null)
{
var image = (Image)sender;
rect.Rect = new Rect(mousePos, e.GetPosition(image));
}
}