In WPF, la funzione System.Windows.Clipboard.getImage()
restituisce un oggetto BitmapSource
. Come novizio in WPF proveniente da uno sfondo WinForms, non mi è chiaro come salvare questa immagine in un file. Quali sono i passi che devo fare?Come salvare un'immagine WPF in un file
25
A
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
Questo non compila sulla mia macchina. I parametri BitmapFrame.Create sono URI o flusso, non immagine: \ –
@IgnacioSolerGarcia Questo metodo esiste in WPF: https://msdn.microsoft.com/en-us/library/ms615993(v=vs.110).aspx. Che tipo di app stai facendo? –
Hai ragione, mi dispiace. Ho fatto un'app rapida di app di concetto con WinForms. –