C# 屏幕截图触发器不起作用



我在这里尝试做一些非常具体的事情;本质上,这段代码的作用是:

else if (cmd == "streams")
                {
                    Console.WriteLine("Hello, thank you for testing out the streams beta.nBefore you start, there are some things you should know.n First off, all screenshots are saved to your documents folder. They are named streams and streams_green.nTo stop recording, close the software.");
                    Console.WriteLine("Please enter your monitors resolution (RECORD WITH YOUR GAME IN FULLSCREEN WINDOWED)");
                    Console.WriteLine("X:");
                    int xres = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Y:");
                    int yres = Convert.ToInt32(Console.ReadLine());
                    p.Send(maxfps);
                    Console.WriteLine("Thank you, recording now started.");
                    Bitmap memoryImage;
                    memoryImage = new Bitmap(xres, yres);
                    Size s = new Size(memoryImage.Width, memoryImage.Height);
                    Graphics memoryGraphics = Graphics.FromImage(memoryImage);
                    for (var i = 0; ; i++)
                    {
                        memoryGraphics.CopyFromScreen(0, 0, 0, 0, s);
                        string str = "";
                        string str2 = "";
                        str = string.Format(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) +
                        $@"streams{i}.png");
                        str2 = string.Format(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) +
                        $@"streams_green{i}.png");
                        System.Threading.Thread.Sleep(2);
                        //Send spacebar would go here
                        p.Send(green);
                        memoryImage.Save(str);
                        System.Threading.Thread.Sleep(1);
                        p.Send(regular);
                        memoryImage.Save(str2);
                        System.Threading.Thread.Sleep(1);
                    }

是向游戏发送一个 dvar,截取屏幕截图,然后拍摄另一个 dvar,然后截取另一个屏幕截图等。正如你所看到的"p.Send(green("和(常规(。但是,我有一个问题。我正在尝试将所有绿屏屏幕截图保存为streams_green,并将常规屏幕截图保存在流下。它目前正在正确保存所有文件,但是,_green图像与常规图像相同,即使拍摄绿色屏幕截图的那一刻与之前的显示帧完全不同。谢谢。

根据代码,您的方法仅在第 memoryGraphics.CopyFromScreen(0, 0, 0, 0, s); 行进行一次屏幕截图,然后通过 memoryImage.Save 将其保存在两个单独的文件中。如果实例green(第 p.Send(green) 行(和实例regular(第 p.Send(regular) 行(具有要保存的信息,则应将它们更改为 Bitmap 并保存。

最新更新