web-dev-qa-db-fra.com

Comment enregistrer une image WPF BitmapSource dans un fichier?

Dans WPF, la fonction System.Windows.Clipboard.getImage() renvoie un objet BitmapSource . En tant que débutant dans WPF provenant d'un arrière-plan WinForms, ce n'est pas clair pour moi comment enregistrer cette image dans un fichier. Quelles sont les étapes à suivre?

33
tbischel

Vous devez utiliser un encodeur (sous-classe de BitmapEncoder ). Par exemple, pour l'enregistrer au format PNG, vous faites quelque chose comme ça:

public static void SaveClipboardImageToFile(string filePath)
{
    var image = Clipboard.GetImage();
    using (var fileStream = new FileStream(filePath, FileMode.Create))
    {
        BitmapEncoder encoder = new PngBitmapEncoder();
        encoder.Frames.Add(BitmapFrame.Create(image));
        encoder.Save(fileStream);
    }
}

Soit dit en passant, notez qu'il y a n bogue dans Clipboard.GetImage . Cela ne devrait pas être un problème si vous enregistrez simplement l'image dans un fichier, mais ce sera le cas si vous souhaitez l'afficher.


EDIT: le bug mentionné ci-dessus semble être corrigé dans 4.0

62
Thomas Levesque