Hallo,
ich erstelle Screenshots ähnlich den berümten Snipping Tool. Leider erhalte ich immer wieder in der u.a. gegebenen Return Zeile eine Out-Of-Memory Exception nach einigen Ausführungen. Mal kann ich 10 mal Überlaufen, mal 50. Kann aber damit nicht wirklich
etwas anfangen. Da ich mMn durch die Usings korrekt aufräume, oder nicht?
private static BitmapSource CopyScreen()
{
var left = System.Windows.Forms.Screen.AllScreens.Min(screen => screen.Bounds.X);
var top = System.Windows.Forms.Screen.AllScreens.Min(screen => screen.Bounds.Y);
var right = System.Windows.Forms.Screen.AllScreens.Max(screen => screen.Bounds.X + screen.Bounds.Width);
var bottom = System.Windows.Forms.Screen.AllScreens.Max(screen => screen.Bounds.Y + screen.Bounds.Height);
var width = right - left;
var height = bottom - top;
using (var screenBmp = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
using (var bmpGraphics = System.Drawing.Graphics.FromImage(screenBmp))
{
bmpGraphics.CopyFromScreen(left, top, 0, 0, new System.Drawing.Size(width, height));
return System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
screenBmp.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
}
}
}