5

winrtでクリップボード内の1枚の画像をファイルに保存したい。しかし、私は方法が見つかりませんでした。お願いできますか?

var dataPackage = Clipboard.GetContent();
            var t = await dataPackage.GetBitmapAsync();
            var t2 = await t.OpenReadAsync();
            t2.AsStream();
            t2.Seek(0);
            BitmapImage bitmapImage = new BitmapImage();
            bitmapImage.SetSource(t2);
            Image image = new Image();
            image.Source = bitmapImage;<
4

3 に答える 3

4

どうぞ :)

保存するフォルダを使用できないことに注意してください。目的地として通過ApplicationData.Current.LocalFolder.Pathしました。FolderPicker選択したフォルダーのパスを使用して渡すことができます。

private async Task StoreImageFromClipboardAsync()
{
    var dataPackage = Clipboard.GetContent();
    var formats = dataPackage.AvailableFormats;
    if (formats.Contains("Bitmap"))
    {
        var t = await dataPackage.GetBitmapAsync();
        var file = await ChangeIRASRToStorageFileAsync(t, ApplicationData.Current.LocalFolder.Path, "Clipboard.png");
    }
}

private async Task<StorageFile> ChangeIRASRToStorageFileAsync(IRandomAccessStreamReference MyIRASR, String StorageFolderPath, String StorageFileName)
{
    IRandomAccessStreamWithContentType MyIRASWCT = await MyIRASR.OpenReadAsync();
    StorageFolder MyStorageFolder = await StorageFolder.GetFolderFromPathAsync(StorageFolderPath);
    StorageFile MyStorageFile = await MyStorageFolder.CreateFileAsync(StorageFileName, CreationCollisionOption.ReplaceExisting);
    Windows.Storage.Streams.Buffer MyBuffer = new Windows.Storage.Streams.Buffer(Convert.ToUInt32(MyIRASWCT.Size));
    IBuffer iBuf = await MyIRASWCT.ReadAsync(MyBuffer, MyBuffer.Capacity, InputStreamOptions.None);
    await FileIO.WriteBufferAsync(MyStorageFile, iBuf);
    return MyStorageFile;
}
于 2013-06-06T16:55:17.913 に答える