Я обрезаю изображение и отображаю два растровых изображения
SKRect display = CalculateDisplayRect(dest, scale * bitmap.Width, scale * bitmap.Height,
horizontal, vertical);
SKRect newDest = new SKRect(display.Left, display.Top, display.Right, display.Bottom/2);
SKRect newSource = new SKRect(display.Left, display.Top, display.Right, display.Bottom / 2);
//canvas.DrawBitmap(bitmap, display, paint);
canvas.DrawBitmap(bitmap, newSource, newDest, paint);
SKRect newDest2 = new SKRect(display.Left, display.Top+ display.Bottom / 2, display.Right, display.Bottom );
SKRect newSource2 = new SKRect(display.Left, display.Top+ display.Bottom / 2, display.Right, display.Bottom );
//canvas.DrawBitmap(bitmap, display, paint);
canvas.DrawBitmap(bitmap, newSource2, newDest2, paint);
static SKRect CalculateDisplayRect(SKRect dest, float bmpWidth, float bmpHeight,
BitmapAlignment horizontal, BitmapAlignment vertical)
{
float x = 0;
float y = 0;
switch (horizontal)
{
case BitmapAlignment.Center:
x = (dest.Width - bmpWidth) / 2;
break;
case BitmapAlignment.Start:
break;
case BitmapAlignment.End:
x = dest.Width - bmpWidth;
break;
}
switch (vertical)
{
case BitmapAlignment.Center:
y = (dest.Height - bmpHeight) / 2;
break;
case BitmapAlignment.Start:
break;
case BitmapAlignment.End:
y = dest.Height - bmpHeight;
break;
}
x += dest.Left;
y += dest.Top;
return new SKRect(x, y, x + bmpWidth, y + bmpHeight);
}