C#如何从屏幕获取像素颜色/数据?

C#如何从屏幕获取像素颜色/数据?,c#,colors,screen,pixel,C#,Colors,Screen,Pixel,好的,我想在这里更高级一点,我想学习如何从屏幕上的某个位置获取像素颜色或数据。我已经搜索了很多,但是似乎大多数人都想用C或C++来做。 我正在制作一个程序,扫描屏幕上某个位置的特定颜色。如果该位置包含任何带有橙色的内容,则“我的窗口”中的数字将变为1表示真,0表示假。 我的窗口背景是透明的,如果这有什么关系的话 我只见过Graphics.CopyFromScreen()和bitmap.GetPixel() 谢谢请查看以下参考资料,我想这是您需要的: 要捕获屏幕上的特定矩形,请使用以下代码

好的,我想在这里更高级一点,我想学习如何从屏幕上的某个位置获取像素颜色或数据。我已经搜索了很多,但是似乎大多数人都想用C或C++来做。 我正在制作一个程序,扫描屏幕上某个位置的特定颜色。如果该位置包含任何带有橙色的内容,则“我的窗口”中的数字将变为1表示真,0表示假。 我的窗口背景是透明的,如果这有什么关系的话

我只见过Graphics.CopyFromScreen()和bitmap.GetPixel()


谢谢

请查看以下参考资料,我想这是您需要的:


要捕获屏幕上的特定矩形,请使用以下代码

    public Bitmap CaptureFromScreen(Rectangle rect)
    {
        Bitmap bmpScreenCapture = null;

        if (rect == Rectangle.Empty)//capture the whole screen
        {
            rect = Screen.PrimaryScreen.Bounds;
        }

        bmpScreenCapture = new Bitmap(rect.Width,rect.Height);

        Graphics p = Graphics.FromImage(bmpScreenCapture);


            p.CopyFromScreen(rect.X,
                     rect.Y,
                     0, 0,
                     rect.Size,
                     CopyPixelOperation.SourceCopy);


        p.Dispose();

        return bmpScreenCapture;
    }
要从特定位置获取颜色,请使用函数

    public Color GetColorFromScreen(Point p)
    {
        Rectangle rect = new Rectangle(p, new Size(2, 2));

        Bitmap map = CaptureFromScreen(rect);

        Color c = map.GetPixel(0, 0);

        map.Dispose();

        return c;
    }

这有用吗:-哇,谢谢,我以前找不到。尽管我担心会再次遇到旧的[DLLImport]user32.dll。我讨厌弄乱那些本机win32函数,因为它比我想要的高级得多,但是谢谢,我会尝试一下。我仍在测试一些东西,看看什么能用,什么不能用。谢谢,我也会试试。为什么重复代码?只需检查矩形是否为空,如果为空,则为其指定屏幕矩形。然后您可以只使用“仅矩形”部分。@JamesCoyle谢谢,我已经更新了代码。