2010-05-24 10 views

Odpowiedz

56

Należy użyć enkodera (podklasa BitmapEncoder). Na przykład, aby zapisać go w formacie PNG, można zrobić coś takiego:

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); 
    } 
} 

Nawiasem mówiąc, należy pamiętać, że istnieje a bug in Clipboard.GetImage. Nie powinno to stanowić problemu, jeśli po prostu zapiszesz obraz w pliku, ale będzie on, jeśli chcesz go wyświetlić.


EDIT: bug wspomniano powyżej wydaje się być ustalona w 4,0

+0

To nie skompilować na moim komputerze. Parametry BitmapFrame.Create to URI lub strumień, a nie obraz: \ –

+0

@IgnacioSolerGarcia Ta metoda istnieje w WPF: https://msdn.microsoft.com/en-us/library/ms615993(v=vs.110).aspx. Jaką aplikację robisz? –

+0

Masz rację, przepraszam. Zrobiłem szybką aplikację sprawdzającą koncepcję z WinForms. –