2010-08-26 19 views

Répondre

0

Jetez un coup d'œil à ImageTools sur codeplex. Cela prend en charge l'encodage Silverlight PNG. Je ne suis pas sûr que cela fonctionnera avec ou peut être compilé pour Windows Phone 7.

0

Vous pouvez essayer le code suivant.

Ce code a fonctionné pour moi. Avant d'essayer, assurez-vous que votre writablebitmap a un arrière-plan transparent (vous pouvez vérifier en assignant à une source d'image de contrôleur d'image). Si ce n'est pas le cas, rendre l'arrière-plan transparent à partir du contrôleur d'où il venait.

var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder; 
var file = await localFolder.CreateFileAsync("temp.png", CreationCollisionOption.ReplaceExisting); 
using (var ras = await file.OpenAsync(FileAccessMode.ReadWrite, StorageOpenOptions.None)) 
{ 
    WriteableBitmap bitmap = imageSource; 
    var stream = bitmap.PixelBuffer.AsStream(); 
    byte[] buffer = new byte[stream.Length]; 
    await stream.ReadAsync(buffer, 0, buffer.Length); 
    BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, ras); 
    encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96.0, 96.0, buffer); 
    await encoder.FlushAsync(); 
}