В настоящее время я пишу небольшое приложение для редактирования изображений для Магазина Windows, в котором я хотел бы использовать чудо-кнопку «Поделиться» для отредактированных изображений. Поскольку некоторые приложения принимают только StorageFiles, а не растровые изображения (например, почтовое приложение по умолчанию), я хотел бы предлагать изображения обоими способами, как описано здесь: http://www.jeffblankenburg.com/2012/11./07/31-days-of-windows-8-day-7-share-contract Однако я не знаю, как создать StorageFile из WrieableBitmap.
Возможно, вы могли бы помочь мне завершить мой код ниже.
// Share Image
async void dtm_DataRequested(DataTransferManager sender, DataRequestedEventArgs e)
{
DataRequestDeferral deferral = e.Request.GetDeferral();
DataPackage requestData = e.Request.Data;
requestData.Properties.Title = "My Image";
requestData.Properties.Description = "Created using a Windows Store App.";
// This stream is to create a bitmap image later
IRandomAccessStream stream = new InMemoryRandomAccessStream();
// Determin which type of BitmapEncoder we should create
Guid encoderId = BitmapEncoder.JpegEncoderId;
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(encoderId, stream);
Stream pixelStream = theImage.PixelBuffer.AsStream();
byte[] pixels = new byte[pixelStream.Length];
await pixelStream.ReadAsync(pixels, 0, pixels.Length);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)theImage.PixelWidth, (uint)theImage.PixelHeight, 96.0, 96.0, pixels);
requestData.SetBitmap(RandomAccessStreamReference.CreateFromStream(stream));
// What goes here?
StorageFile storageFileImage =
List<IStorageItem> files = new List<IStorageItem>();
files.Add(storageFileImage);
requestData.SetStorageItems(files);
requestData.Properties.Thumbnail = RandomAccessStreamReference.CreateFromStream(stream);
await encoder.FlushAsync();
deferral.Complete();
}