none
Out of Memory RRS feed

  • Frage

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

    Montag, 9. März 2015 19:32

Antworten