0

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

4

1 に答える 1

1

探していると思います

Graphics.CopyFromSreen(..);

を作成しImage、 を使用して画面からピクセルをコピーしますGraphics.CopyFromSreen。次に、を使用bitmap.GetPixel()して色を取得できますpixel

詳細については、 Graphics.CopyFromSreenを参照してください。

于 2013-09-26T11:51:27.663 に答える