Как нарисовать изображение на другом изображении? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть UWP SoftwareBitmap, к которому я хотел бы добавить отступы с двух сторон (как будто это показано в режиме Fit ) и получить результат как SoftwareBitmap. Я предполагаю, что мне нужно скопировать его на новый пустой SoftwareBitmap, но я не могу найти способ сделать это.

1 Ответ

0 голосов
/ 18 февраля 2020

Как нарисовать изображение на другом изображении?

Вы можете использовать библиотеку Win2D для рисования изображения с отступами. Если вы использовали SoftwareBitmap в качестве источника, попробуйте сначала преобразовать его в файл, и вы можете обратиться к этому документу .

Нам нужно сделать Win2D CanvasRenderTarget и установите его ширину как image width + 2 * padding width. Затем используйте CanvasRenderTarget, чтобы создать DrawingSession и нарисуйте свое изображение. Для получения дополнительной информации см. Следующий код.

// file parameter is the image file
using (var stream = await file.OpenAsync(FileAccessMode.Read))
{   //padding width
    float padding = 30;
    var device = new CanvasDevice();
    var bitmap = await CanvasBitmap.LoadAsync(device, stream);
    var renderer = new CanvasRenderTarget(device,
                                          bitmap.SizeInPixels.Width+ 2*padding,
                                          bitmap.SizeInPixels.Height, bitmap.Dpi);
    using (var ds = renderer.CreateDrawingSession())
    {   // draw image from point xy = point(padding,0)   
        ds.DrawImage(bitmap,padding,0);
    }
    stream.Seek(0);
    InMemoryRandomAccessStream randomAccessStream = new InMemoryRandomAccessStream();
    await renderer.SaveAsync(randomAccessStream, CanvasBitmapFileFormat.Png);
    BitmapDecoder decoder = await BitmapDecoder.CreateAsync(randomAccessStream);
    var softwareBitmap = await decoder.GetSoftwareBitmapAsync();

}

Мне нужно скопировать его на новую пустую карту SoftwareBitmap, но я не могу найти способ сделать это.

Вы можете использовать метод CopyTo, чтобы скопировать текущий SoftwareBitmap в предоставленный объект SoftwareBitmap.

...