ホームページ > バックエンド開発 > C++ > 特定の画面ピクセルの色をプログラムで検出するにはどうすればよいですか?

特定の画面ピクセルの色をプログラムで検出するにはどうすればよいですか?

DDD
リリース: 2024-12-30 06:34:09
オリジナル
568 人が閲覧しました

How Can I Programmatically Detect the Color of a Specific Screen Pixel?

画面ピクセルの色を検出する方法

この質問では、ユーザーは特定のピクセルの色を決定する方法を探しています彼らの画面に。最終的な目標は、特定の色が検出されたときにアクションをトリガーすることです。

効率的な解決策を見つける

最も効果的なアプローチには、GetColorAt 関数を使用してピクセルの色を取得することが含まれます。特定の場所に色を付けます。他の方法とは異なり、このアプローチはシステムに接続されているモニターの数に依存しません。

GetColorAt 関数を実装する C# コード スニペットを次に示します。

public Color GetColorAt(Point location)
{
    using (Graphics gdest = Graphics.FromImage(screenPixel))
    {
        using (Graphics gsrc = Graphics.FromHwnd(IntPtr.Zero))
        {
            IntPtr hSrcDC = gsrc.GetHdc();
            IntPtr hDC = gdest.GetHdc();
            int retval = BitBlt(hDC, 0, 0, 1, 1, hSrcDC, location.X, location.Y, (int)CopyPixelOperation.SourceCopy);
            gdest.ReleaseHdc();
            gsrc.ReleaseHdc();
        }
    }

    return screenPixel.GetPixel(0, 0);
}
ログイン後にコピー

ピクセル カラー情報

GetColorAt 関数を使用して、画面上の特定のピクセルをポーリングできるようになりました。希望の色。青色のピクセルをポーリングする例を次に示します。

private void PollPixel(Point location)
{
    while(true)
    {
        var c = GetColorAt(location);

        if (c.R == c.G &amp;&amp; c.G < 64 &amp;&amp; c.B > 128)
        {
            DoAction();
            return;
        }

        Thread.Sleep()
    }
}
ログイン後にコピー

このコードは、特定の位置にあるピクセルを継続的にポーリングします。ピクセルが青色の基準に一致すると、DoAction メソッドがトリガーされます。

結論

GetColorAt 関数を使用すると、個々の画面ピクセルの色を効率的に決定できます。この機能を使用すると、特定のアプリケーションの必要に応じて、さまざまな画像処理タスクや画面検出タスクを実装できます。

以上が特定の画面ピクセルの色をプログラムで検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート