C#获取透明控件后面的像素

时间:2013-09-26 11:49:06

标签: c# pixel

我正在构建一个能够获取部分屏幕像素的应用程序。我试图通过使表单的背景透明来做到这一点,以便您可以透过表单查看。问题是,当我使用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函数,尽管人们说它很慢。

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找

Graphics.CopyFromSreen(..);

创建Image,使用Graphics.CopyFromSreen从屏幕复制像素。然后,您可以使用bitmap.GetPixel()获取pixel

处的颜色

有关详细信息,请参阅Graphics.CopyFromSreen