我正在构建一个能够获取部分屏幕像素的应用程序。我试图通过使表单的背景透明来做到这一点,以便您可以透过表单查看。问题是,当我使用PanelToBitmap函数时,我得到的是透明色,而不是实际上对用户可见的像素。
目前我正在使用此功能。
Point point = new Point();
if (point.X > this.Location.X && point.X < this.Location.X + this.Width && point.Y > this.Location.Y + RectangleToScreen(this.ClientRectangle).Top - this.Top && point.Y < this.Location.Y + this.Height)
{
point.X = point.X - this.Location.X;
point.Y = point.Y - this.Location.Y;
Bitmap img = (Bitmap)PanelToBitmap(this);
Color color = img.GetPixel(point.X, point.Y);
form.label1.Text = color.R.ToString();
form.label2.Text = color.G.ToString();
form.label3.Text = color.B.ToString();
}
是否有任何功能能够获取用户实际可见的像素?我在考虑Gdi32库中的GetPixel函数,尽管人们说它很慢。
答案 0 :(得分:1)
我认为你正在寻找
Graphics.CopyFromSreen(..);
创建Image
,使用Graphics.CopyFromSreen
从屏幕复制像素。然后,您可以使用bitmap.GetPixel()
获取pixel
有关详细信息,请参阅Graphics.CopyFromSreen