使用Windows Phone 8.1中的数据传输管理器共享渲染到位图图像

时间:2014-07-22 01:51:46

标签: c# windows-phone-8 windows-phone-8.1

我想使用DataTransferManager在我的Windows Phone 8.1应用程序中共享图像。 为此我使用我的Windows 8.1应用程序代码使用DataTransfer进行共享,它在Windows 8.1上运行正常,但它在WP8.1上不起作用。

这是我的方法,我正在使用RenderBitmap类将我的画布转换为图像,然后创建要在SetBitmap方法中使用的位图的RandomAccessStream。

   protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    DataTransferManager.GetForCurrentView().DataRequested+= MainPage_DataRequested;
}

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

    // 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.SetBitmap(RandomAccessStreamReference.CreateFromStream(stream));
    args.Request.Data.Properties.Description = "description";
    args.Request.Data.Properties.Title = "title";
    deferral.Complete();
}

这在Windows 8.1中运行良好如何在Windows Phone 8.1中共享应用程序(如Messaging,OneNote等)中的图像无法附加

enter image description here

enter image description here

需要帮助,坚持了很长时间。

0 个答案:

没有答案