CanvasGeometry GetSelectionGeometry(ICanvasResourceCreator resourceCreator, List<Vector2> points)
{
Vector2 start = points.First();
Vector2 end = points.Last();
switch (RegionSelectionMode)
{
case SelectionMode.Rectangle:
{
Vector2 min = Vector2.Min(start, end);
Vector2 size = Vector2.Abs(start - end);
return CanvasGeometry.CreateRectangle(resourceCreator, min.X, min.Y, size.X, size.Y);
}
case SelectionMode.Ellipse:
{
Vector2 center = (start + end) / 2;
Vector2 radius = Vector2.Abs(start - end) / 2;
return CanvasGeometry.CreateEllipse(resourceCreator, center, radius.X, radius.Y);
}
case SelectionMode.Freehand:
{
return CanvasGeometry.CreatePolygon(resourceCreator, points.ToArray());
}
default:
throw new NotSupportedException();
}
}