Совместное использование рендеринга в растровое изображение в Windows Phone 8.1

Я хочу поделиться своим холстом как изображением в Windows Phone 8.1. Для этого я сначала конвертирую свой холст в изображение, а затем делюсь им. Я попробовал свой код для Windows 8.1. Никаких ошибок не происходит, но изображение отсутствует в приложении с исходным кодом, только описание и заголовок.

Вот код:

private async void DataTransferManager_DataRequested(DataTransferManager sender, DataRequestedEventArgs e)
        {
            e.Request.Data.Properties.Title = "My app";
            e.Request.Data.Properties.Description = "app description";

            DataRequest request = e.Request;

            // Request deferral to wait for async calls
            DataRequestDeferral deferral = request.GetDeferral();

            // XAML objects can only be accessed on the UI thread, and the call may come in on a background thread
            await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
            {
                try
                {

                    RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();
                    InMemoryRandomAccessStream stream = new InMemoryRandomAccessStream();
                    // Render to an image at the current system scale and retrieve pixel contents
                    await renderTargetBitmap.RenderAsync(SavedCanvas);
                    var pixelBuffer = await renderTargetBitmap.GetPixelsAsync();

                    // Encode image to an in-memory stream
                    var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);

                    encoder.SetPixelData(
                        BitmapPixelFormat.Bgra8,
                        BitmapAlphaMode.Ignore,
                        (uint)renderTargetBitmap.PixelWidth,
                        (uint)renderTargetBitmap.PixelHeight,
                        DisplayInformation.GetForCurrentView().LogicalDpi,
                        DisplayInformation.GetForCurrentView().LogicalDpi,
                        pixelBuffer.ToArray());

                    await encoder.FlushAsync();


                    request.Data.Properties.Thumbnail = RandomAccessStreamReference.CreateFromStream(stream);

                    //  e.Request.Data.Properties.Thumbnail=(RandomAccessStreamReference.CreateFromStream(stream));
                    // Set content of the DataProviderRequest to the encoded image in memory
                    request.Data.SetBitmap(RandomAccessStreamReference.CreateFromStream(stream));
                }
                finally
                {
                    deferral.Complete();

                }
            });

        }

enter image description here

enter image description here

Это прекрасно работает в Windows 8.1, я думаю, что и здесь должно работать нормально. Изображение не видно при совместном использовании приложений, таких как обмен сообщениями, OneNote и т.д.

Нужна помощь. Спасибо.

Ответ 1

Вы передаете растровое изображение в приложение, которое не поддерживает растровые изображения, тогда растровое изображение будет игнорироваться. Отправка растрового файла вместо этого обычно требуется. Вы можете сохранить свой файл и затем загрузить этот StorageFile или создать в памяти StorageFile. В целях тестирования я хотел бы сохранить файл в StorageFile, убедиться, что файл может правильно отображаться в приложении, а затем убедиться, что он работает правильно при совместном использовании. Этот образец может быть полезным.http://code.msdn.microsoft.com/windowsapps/File-access-sample-d723e597