Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在另一个图像上绘制图像?_C#_Uwp_Windows Store Apps_Win Universal App - Fatal编程技术网

C# 如何在另一个图像上绘制图像?

C# 如何在另一个图像上绘制图像?,c#,uwp,windows-store-apps,win-universal-app,C#,Uwp,Windows Store Apps,Win Universal App,我有一个UWPSoftwareBitmap,我想在它的两侧添加填充(好像它在Fit模式中显示)并得到一个SoftwareBitmap的结果。我想我需要将它复制到一个新的空软件位图,但我找不到任何方法 如何在另一个图像上绘制图像 您可以使用库来绘制带有填充的图像。如果您使用SoftwareBitmap作为源代码,请首先尝试将其转换为文件,您可以参考此文件 我们需要制作Win2DCanvasRenderTarget,并将其宽度设置为image width+2*padding width。然后使用Ca

我有一个UWP
SoftwareBitmap
,我想在它的两侧添加填充(好像它在Fit模式中显示)并得到一个
SoftwareBitmap
的结果。我想我需要将它复制到一个新的空
软件位图
,但我找不到任何方法

如何在另一个图像上绘制图像

您可以使用库来绘制带有填充的图像。如果您使用
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();

}
我需要将它复制到一个新的空软件位图上,但我找不到任何方法

您可以使用方法将当前软件位图复制到提供的软件位图对象中