コード
お困りの方がいらっしゃったようで、先にコードを公開。
C#
using System;
using System.Threading.Tasks;
using Windows.ApplicationModel.DataTransfer;
using Windows.Storage.Streams;
using Windows.UI.Xaml.Controls;
using Windows.Graphics.Imaging;
using Windows.UI.Xaml.Media.Imaging;
using System.Runtime.InteropServices.WindowsRuntime;
public class Screenshot
{
public async Task ScreenshotOriginalAsync(Page page)
{
await StartCaptureAsync(page);
}
public async Task StartCaptureAsync(Page page)
{
var bitmap = new RenderTargetBitmap();
await bitmap.RenderAsync(page);
var pixels = await bitmap.GetPixelsAsync();
var stream = new InMemoryRandomAccessStream();
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8
, BitmapAlphaMode.Premultiplied
, (uint)bitmap.PixelWidth
, (uint)bitmap.PixelHeight
, 96.0, 96.0
, pixels.ToArray());
await encoder.FlushAsync();
var dataPackage = new DataPackage();
dataPackage.SetBitmap(RandomAccessStreamReference.CreateFromStream(stream));
Clipboard.SetContent(dataPackage);
}
}
以下、工事中。
参考サンプル
簡易解説
Microsoftでのサンプルでは、BITMAPクラスをファイル保存している。
System.Windows.Clipboardは、SetContentしかなく、また、引数としてWindows.ApplicationModel.DataTransfer.DataPackageしか受けつけない。
なので、変換する必要があります。
コメント