画面の一部のピクセルのピクセルを取得できるアプリケーションを構築しています。フォームが透けて見えるように、フォームの背景を透明にすることでこれを実行しようとしています。問題は、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 関数について考えていましたが、遅いと言われています。