AirTabInputServer.Win32InputClient.Screenshot C# (CSharp) Method

Screenshot() public method

public Screenshot ( string dir, int width, int height ) : string
dir string
width int
height int
return string
        public string Screenshot(string dir, int width, int height)
        {
            int screenW, screenH;
            GetScreenSize(out screenW, out screenH);

            Bitmap memImage = new Bitmap(screenW, screenH);
            using (Graphics g = Graphics.FromImage(memImage))
            {
                g.CopyFromScreen(0, 0, 0, 0, memImage.Size);

                if (width > 0 && height > 0)
                {
                    Bitmap newImage = new Bitmap(width, height);
                    using (Graphics g2 = Graphics.FromImage(newImage))
                    {
                        g2.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                        g2.DrawImage(memImage, new Rectangle(0, 0, width, height));
                        memImage.Dispose();
                        memImage = newImage;
                    }
                }

                // create the directory if it doesn't exist - mostly for debugging
                if (!System.IO.Directory.Exists(dir))
                {
                    System.IO.Directory.CreateDirectory(dir);
                }

                string tempFile = System.IO.Path.GetTempFileName();
                memImage.Save(tempFile, ImageFormat.Jpeg);
                memImage.Dispose();

                for (int i = 0; i < 10; i++)
                {
                    try
                    {
                        String savedFile = "";
                        savedFile = dir + System.IO.Path.DirectorySeparatorChar + "screen" + i + ".jpg";

                        if (System.IO.File.Exists(savedFile))
                        {
                            System.IO.File.Replace(tempFile, savedFile, null);
                        }
                        else
                        {
                            System.IO.File.Move(tempFile, savedFile);
                        }
                        return dir + System.IO.Path.DirectorySeparatorChar + Environment.NewLine + "screen" + i + ".jpg";
                    }
                    catch (Exception e)
                    {
                        Console.Error.WriteLine("Failed to capture screenshot at iteration {0}: {1}", i, e);
                    }
                }
            }

            return "FAILED" + Environment.NewLine + "FAILED";
        }