SkiaSharp загрузить изображение из ImageView - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь загрузить растровое изображение из ImageView в SKCanvasView.Проблема в том, что у этого изображения установлен CenterCrop, а изображение, загруженное на холст, слишком велико.Как сделать так, как в ImageView?

Примеры кода:

_skBitmap = ((BitmapDrawable)_frontView.ImageView.Drawable).Bitmap.ToSKBitmap();

И рисунок:

private void _canvas_PaintSurface(object sender, SKPaintSurfaceEventArgs e)
    {
        var canvas = e.Surface.Canvas;

        var scale = Resources.DisplayMetrics.Density;

        canvas.Scale(scale);

        if (_skBitmap != null)
        {
            canvas.DrawBitmap(_skBitmap, e.Info.Rect);
        }
    }

1 Ответ

0 голосов
/ 21 февраля 2019

В случае, если кому-то интересно (в моем случае изображение всегда шире экрана):

private void _canvas_PaintSurface(object sender, SKPaintSurfaceEventArgs e)
{
    var canvas = e.Surface.Canvas;

    var scale = Resources.DisplayMetrics.Density;

    canvas.Scale(scale);

    if (_skBitmap != null)
        {
            var factor = scaledSize.Height / _skBitmap.Height;
            var nw = _skBitmap.Width * factor;
            var offset = (scaledSize.Width - nw) / 2;

            var sr = new SKRect(offset, 0, nw + offset, scaledSize.Height);
            canvas.DrawBitmap(_skBitmap, sr);
        }
}
...