2010-05-24 8 views

risposta

56

È necessario utilizzare un codificatore (sottoclasse di BitmapEncoder). Per esempio, per salvarlo nel formato PNG, si fa qualcosa di simile:

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

A proposito, si noti che c'è a bug in Clipboard.GetImage. Non dovrebbe essere un problema se si salva l'immagine in un file, ma lo sarà se si desidera visualizzarla.


EDIT: il bug di cui sopra sembra essere fissato in 4,0

+0

Questo non compila sulla mia macchina. I parametri BitmapFrame.Create sono URI o flusso, non immagine: \ –

+0

@IgnacioSolerGarcia Questo metodo esiste in WPF: https://msdn.microsoft.com/en-us/library/ms615993(v=vs.110).aspx. Che tipo di app stai facendo? –

+0

Hai ragione, mi dispiace. Ho fatto un'app rapida di app di concetto con WinForms. –