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