Ich habe Blaze seinen Vorschlag so halb umgesetzt, also eher auf eine Primitivere Art und weiße, funktioniert aber. Könnt ihr mir zu der Klasse Verbesserungsvorschläge geben?
Danke:)
C#-Quellcode
- public class ImageCache
- {
- public ImageCache()
- {
- ImageCacheLocation = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "DisplayUtilize Cache");
- if (Directory.Exists(ImageCacheLocation) == false)
- {
- Directory.CreateDirectory(ImageCacheLocation);
- }
- }
- public string ImageCacheLocation { set; get; }
- private List<string> CacheFiles = new List<string>();
- private int InternCount = 0;
- public void AddToCache(Bitmap bmp)
- {
- InternCount++;
- Bitmap bitmap = (Bitmap)bmp.Clone();
- bitmap.Save(Path.Combine(ImageCacheLocation, "cache" + InternCount.ToString()+".png"), System.Drawing.Imaging.ImageFormat.Png);
- CacheFiles.Add(Path.Combine(ImageCacheLocation, "cache" + InternCount.ToString() + ".png"));
- bitmap.Dispose();
- }
- public void DisposeCache()
- {
- InternCount = 0;
- Thread disposeCache = new Thread(removeCache);
- disposeCache.Start();
- }
- public void Dispose()
- {
- Thread disposeCache = new Thread(removeCache);
- disposeCache.Start();
- }
- private void removeCache()
- {
- string[] arrCache = Directory.GetFiles(ImageCacheLocation, "*.png");
- for (int i = 0; i <= arrCache.Length - 1; i++)
- {
- try
- {
- File.Delete(arrCache[i]);
- }
- catch
- {
- }
- }
- }
- public Bitmap Undo()
- {
- if (CacheFiles.Count > 1)
- {
- CacheFiles.Remove(CacheFiles[CacheFiles.Count - 1]);
- return (Bitmap)Bitmap.FromFile(CacheFiles[CacheFiles.Count - 1]);
- }
- else
- {
- return (Bitmap)Bitmap.FromFile(CacheFiles[CacheFiles.Count - 1]);
- }
- }
Danke:)