C# 在windows应用商店中将两个画布保存为单个图像

C# 在windows应用商店中将两个画布保存为单个图像,c#,windows-store-apps,C#,Windows Store Apps,我将画布保存为windows应用商店应用程序中的图像,如下所示: RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(); await renderTargetBitmap.RenderAsync(canvas1); var pixelBuffer = await renderTargetBitmap.GetPixelsAsync(); var savePicker = new FileSavePicker(); sav

我将画布保存为windows应用商店应用程序中的图像,如下所示:

RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
 await renderTargetBitmap.RenderAsync(canvas1);
var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();
var savePicker = new FileSavePicker();
savePicker.DefaultFileExtension = ".png";
savePicker.FileTypeChoices.Add(".png", new List<string> { ".png" }); 
savePicker.FileTypeChoices.Add(".jpg", new List<string> { ".jpg" });
savePicker.FileTypeChoices.Add(".bmp", new List<string> { ".bmp" }); 
savePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
savePicker.SuggestedFileName = "image1.png";
 var saveFile = await savePicker.PickSaveFileAsync();
if (saveFile == null)
return;
 using (var fileStream = await saveFile.OpenAsync(FileAccessMode.ReadWrite))
 {
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, fileStream);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Ignore,
(uint)renderTargetBitmap.PixelWidth,
(uint)renderTargetBitmap.PixelHeight,
DisplayInformation.GetForCurrentView().LogicalDpi,
DisplayInformation.GetForCurrentView().LogicalDpi,
pixelBuffer.ToArray());
await encoder.FlushAsync();
}
RenderTargetBitmap RenderTargetBitmap=新建RenderTargetBitmap();
等待renderTargetBitmap.RenderAsync(canvas1);
var pixelBuffer=await renderTargetBitmap.GetPixelsAsync();
var savePicker=new FileSavePicker();
savePicker.DefaultFileExtension=“.png”;
savePicker.FileTypeChoices.Add(“.png”,新列表{.png});
savePicker.FileTypeChoices.Add(“.jpg”,新列表{.jpg});
savePicker.FileTypeChoices.Add(“.bmp”,新列表{.bmp});
savePicker.SuggestedStartLocation=PickerLocationId.PicturesLibrary;
savePicker.SuggestedFileName=“image1.png”;
var saveFile=await savePicker.PickSaveFileAsync();
if(saveFile==null)
返回;
使用(var fileStream=await saveFile.OpenAsync(FileAccessMode.ReadWrite))
{
var encoder=await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId,fileStream);
编码器.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode。忽略,
(uint)renderTargetBitmap.PixelWidth,
(uint)renderTargetBitmap.PixelHeight,
DisplayInformation.GetForCurrentView().LogicalDpi,
DisplayInformation.GetForCurrentView().LogicalDpi,
pixelBuffer.ToArray());
等待编码器。FlushAsync();
}

现在我想将两个画布
保存为一个图像,即canvas1和canvas2
。如何做到这一点?

最简单的方法是将两个
canvas
作为另一个
UIElement
Child
添加,然后将父
UIElement
渲染到图像中。实际上,当我添加另一个画布作为canvas1的父画布时,我已经向该画布添加了一些鼠标事件,即canvas1。。。鼠标事件不适用于画布1