DataPackage.SetBitmap在Windows Phone 8.1 WinRT App中不起作用

时间:2016-01-14 17:52:42

标签: c# asp.net windows-phone-8.1 winrt-xaml

我正在使用以下代码在我的Windows Phone 8.1 App中共享图像。

private async void MainPage_DataRequested(DataTransferManager sender, DataRequestedEventArgs args)
    {
        var deferral = args.Request.GetDeferral();
        var bitmap = new RenderTargetBitmap();
        await bitmap.RenderAsync(this);

        // 1. Get the pixels
        IBuffer pixelBuffer = await bitmap.GetPixelsAsync();
        byte[] pixels = pixelBuffer.ToArray();

        // 2. Write the pixels to a InMemoryRandomAccessStream
        var stream = new InMemoryRandomAccessStream();
        var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, stream);

        encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96,
            pixels);

        await encoder.FlushAsync();
        stream.Seek(0);

        // 3. Share it
        args.Request.Data.Properties.Description = "test";
        args.Request.Data.Properties.Title = "test";
        args.Request.Data.SetBitmap(RandomAccessStreamReference.CreateFromStream(stream));
        deferral.Complete();

    }

上面的代码显示了'准备要共享的内容'视图,但它没有显示共享图片的应用列表。

但是,如果我使用 DataPackage.SetText ,一切正常。

无法弄清楚问题。请帮助我!

2 个答案:

答案 0 :(得分:0)

以下两个链接帮我捕捉了截图。

Taking Screenshot

Saving and Sharing Screenshot

答案 1 :(得分:0)

将图像保存到文件,然后按照以下方式附加文件DataPackage:

    args.Request.Data.SetStorageItems(new List<IStorageFile> { yourPngFile });