C# 如何在另一个图像上绘制图像?
我有一个UWPC# 如何在另一个图像上绘制图像?,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
SoftwareBitmap
,我想在它的两侧添加填充(好像它在Fit模式中显示)并得到一个SoftwareBitmap
的结果。我想我需要将它复制到一个新的空软件位图
,但我找不到任何方法
如何在另一个图像上绘制图像
您可以使用库来绘制带有填充的图像。如果您使用SoftwareBitmap
作为源代码,请首先尝试将其转换为文件,您可以参考此文件
我们需要制作Win2DCanvasRenderTarget
,并将其宽度设置为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();
}
我需要将它复制到一个新的空软件位图上,但我找不到任何方法
您可以使用方法将当前软件位图复制到提供的软件位图对象中