Nabend allen,
Wie im Titel erwähnt kriege Ich dies nicht richtig gebacken.
Hier ist mal ein bisschen code:
Version 1:
Und version 2:
Beide code beispiele funktionieren einwandfrei, jedoch wenn Ich die erstellte temporäre datei nach einer Weile löschen möchte, bekomme Ich gesagt das ein Prozess die datei gerade benutzt. Was genau mache Ich hier falsch? Google hat mich nur auf den 2. code schnippsel gebracht was bei mir das Problem jedoch nicht beseitigt..
Sobald mein program geschlossen wird, kann Ich die Datei auch manuell löschen also d.h. das kein anderes Programm auf die Datei zugreift, sondern nur das hauptprogramm womit die JPG Datei erstellt wird.
Danke falls sich jemand findet der mir weiterhelfen kann!
Frohe Weihnachten!
Legend
Wie im Titel erwähnt kriege Ich dies nicht richtig gebacken.
Hier ist mal ein bisschen code:
Version 1:
Code:
BitmapSource bmpSource = Snapshot.TakeSnapshot((int)contentX, (int)contentY, (int)contentWidth, (int)contentHeight);
string fileName = System.IO.Path.Combine(mainWnd.TempPath, "snapshot_" + DateTime.Now.ToString("HH_mm_ss_ffff") + ".jpeg");
using (Stream stream = new FileStream(fileName, FileMode.Create))
{
JpegBitmapEncoder jpegEncoder = new JpegBitmapEncoder();
jpegEncoder.QualityLevel = 100;
jpegEncoder.Frames.Add(BitmapFrame.Create(bmpSource));
jpegEncoder.Save(stream);
stream.Flush();
}
Code:
BitmapSource bmpSource = Snapshot.TakeSnapshot((int)contentX, (int)contentY, (int)contentWidth, (int)contentHeight);
string fileName = System.IO.Path.Combine(mainWnd.TempPath, "snapshot_" + DateTime.Now.ToString("HH_mm_ss_ffff") + ".jpeg");
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
Stream stream = new FileStream(fileName, FileMode.Create);
MemoryStream memoryStream = new MemoryStream();
BitmapImage bImg = new BitmapImage();
encoder.Frames.Add(BitmapFrame.Create(bmpSource));
encoder.Save(memoryStream);
stream.Write(memoryStream.GetBuffer(), 0, (int)memoryStream.Length - 1);
bImg.BeginInit();
bImg.CacheOption = BitmapCacheOption.OnLoad;
bImg.StreamSource = new MemoryStream(memoryStream.ToArray());
bImg.EndInit();
memoryStream.Flush();
stream.Flush();
memoryStream.Close();
stream.Close();
// Use bImg as Thumbnail and fileName as temp-file-reference
Sobald mein program geschlossen wird, kann Ich die Datei auch manuell löschen also d.h. das kein anderes Programm auf die Datei zugreift, sondern nur das hauptprogramm womit die JPG Datei erstellt wird.
Danke falls sich jemand findet der mir weiterhelfen kann!
Frohe Weihnachten!
Legend