私は現在、編集された画像の共有チャームを利用したい Windows ストア用の小さな画像編集アプリを書いています。一部のアプリは StorageFiles のみを受け入れ、ビットマップは受け入れないため (デフォルトのメール アプリなど)、ここで説明されているように、両方の方法で画像を提供したいと思います: http://www.jeffblankenburg.com/2012/11/07/31- days-of-windows-8-day-7-share-contract ただし、WrieableBitmap から StorageFile を作成する方法がわかりません。
以下のコードを完成させるのを手伝ってくれるかもしれません。
// 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();
}