C#如何在while循环中从另一个类调用void方法

jun

所以我有2个类别:ImageScanner和Form1

我想做的是继续在我的while循环中调用ScreenCapture方法,直到满足特定条件为止。此方法捕获我的屏幕,并将屏幕截图另存为PNG文件在同一位置。这意味着每次我截图时,新的都会替换旧的。

当我单击表单上的按钮时,我正在尝试执行此操作,因此我不知道为什么C#给我一个错误。但是,当不在循环中时,我可以调用ScreenCapture方法。

class ImageScanner
    {
        public static void ScreenCapture()
        {
            var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                                           Screen.PrimaryScreen.Bounds.Height,
                                           PixelFormat.Format32bppPArgb);

            // Create a graphics object from the bitmap.
            var gfxScreenshot = Graphics.FromImage(bmpScreenshot);

            // Take the screenshot from the upper left corner to the right bottom corner.
            gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                                        Screen.PrimaryScreen.Bounds.Y,
                                        0,
                                        0,
                                        Screen.PrimaryScreen.Bounds.Size,
                                        CopyPixelOperation.SourceCopy);

            // Save the screenshot to the specified path that the user has chosen.
            bmpScreenshot.Save("Screenshot.png", ImageFormat.Png);
        }
    }



public partial class ClickForm : Form
{
    private void ECFile_Click(object sender, EventArgs e)
    {
        int j = 0;

        while (j < 20)
        {
            j += 1;
            ImageScanner.ScreenCapture();
        }
        MessageBox.Show("found");
    }
}

错误信息:

System.Runtime.InteropServices.ExternalException (0x80004005): A generic error occurred in GDI+.
   at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
   at System.Drawing.Image.Save(String filename, ImageFormat format)
   at AutoClicker.ImageScanner.ScreenCapture() in C:\Users\User1\source\repos\AutoClicker\AutoClicker\ImageScanner.cs:line 32
   at AutoClicker.ClickForm.ECFile_Click(Object sender, EventArgs e) in C:\Users\User1\source\repos\AutoClicker\AutoClicker\Form1.cs:line 232
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
你说过Alehosaini

通常由于权限限制而发生这种情况,请对您保存到的文件夹授予足够的权限

如您所见,它卡在了

System.Drawing.Image.Save

优良作法是先让所有人完全控制,然后再通过测试并通过尝试减少许可。

保存文件时,应提供完整路径,包括目录,文件夹,文件和文件扩展名。例:C:\abcd\filename.bmp

不合主题,但值得一提:此外,考虑到您正在处理外部资源,因此会延迟输入和输出,建议也保存命令Thread.Delay(someseconds),尤其是在通过以下方式保存和使用保存的文件时:直接输入另一个代码(例如处理临时文件)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从另一个类调用void方法

来自分类Dev

如何在C#中的另一个方法中调用同一类中的方法?

来自分类Dev

调用在Java的另一个循环中创建的变量,以及如何在do ... while循环中具有多个条件

来自分类Dev

如何在另一个while循环中使用if else语句

来自分类Dev

如何在另一个类中调用一个类的main()方法?

来自分类Dev

如何在C#中的另一个线程上运行的循环中更新文本框

来自分类Dev

我如何在C#中调用另一个网站中的方法

来自分类Dev

如何在C#中从另一个私有类调用私有类变量

来自分类Dev

在当前类的循环中调用另一个类函数

来自分类Dev

如何在同一个类的另一个方法中调用一个方法?

来自分类Dev

如何在我的主类的另一个类中调用方法?

来自分类Dev

如何在一个类中从另一个调用一个函数(方法)?

来自分类Dev

我如何在 Python 的另一个 while 循环中正确地创建一个 while 循环?

来自分类Dev

如何从另一个类调用@selector方法

来自分类Dev

Flutter:如何从另一个类调用方法?

来自分类Dev

如何从另一个小写的类调用方法?

来自分类Dev

如何从另一个类调用@selector方法

来自分类Dev

如何从另一个类调用get方法?

来自分类Dev

如何从另一个类调用 invalidate() 方法?

来自分类Dev

如何从另一个类调用方法?

来自分类Dev

如何从另一个项目调用类的方法

来自分类Dev

如何从另一个类调用HashMap的方法?

来自分类Dev

如何在覆盖另一个模块的某些方法的模块上调用类方法?

来自分类Dev

如何从另一个类中迅速调用另一个方法?

来自分类Dev

如何在android中将一个类的方法调用到另一个类

来自分类Dev

您如何在一个类中从另一个类中调用方法?

来自分类Dev

从C#中的另一个类调用方法

来自分类Dev

从Visual C#中的另一个类调用动态方法

来自分类Dev

如何从C#中的另一个类调用函数

Related 相关文章

  1. 1

    如何从另一个类调用void方法

  2. 2

    如何在C#中的另一个方法中调用同一类中的方法?

  3. 3

    调用在Java的另一个循环中创建的变量,以及如何在do ... while循环中具有多个条件

  4. 4

    如何在另一个while循环中使用if else语句

  5. 5

    如何在另一个类中调用一个类的main()方法?

  6. 6

    如何在C#中的另一个线程上运行的循环中更新文本框

  7. 7

    我如何在C#中调用另一个网站中的方法

  8. 8

    如何在C#中从另一个私有类调用私有类变量

  9. 9

    在当前类的循环中调用另一个类函数

  10. 10

    如何在同一个类的另一个方法中调用一个方法?

  11. 11

    如何在我的主类的另一个类中调用方法?

  12. 12

    如何在一个类中从另一个调用一个函数(方法)?

  13. 13

    我如何在 Python 的另一个 while 循环中正确地创建一个 while 循环?

  14. 14

    如何从另一个类调用@selector方法

  15. 15

    Flutter:如何从另一个类调用方法?

  16. 16

    如何从另一个小写的类调用方法?

  17. 17

    如何从另一个类调用@selector方法

  18. 18

    如何从另一个类调用get方法?

  19. 19

    如何从另一个类调用 invalidate() 方法?

  20. 20

    如何从另一个类调用方法?

  21. 21

    如何从另一个项目调用类的方法

  22. 22

    如何从另一个类调用HashMap的方法?

  23. 23

    如何在覆盖另一个模块的某些方法的模块上调用类方法?

  24. 24

    如何从另一个类中迅速调用另一个方法?

  25. 25

    如何在android中将一个类的方法调用到另一个类

  26. 26

    您如何在一个类中从另一个类中调用方法?

  27. 27

    从C#中的另一个类调用方法

  28. 28

    从Visual C#中的另一个类调用动态方法

  29. 29

    如何从C#中的另一个类调用函数

热门标签

归档