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

モニター上の特定のピクセルの色をプログラムで検出して応答するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-01 14:49:10
オリジナル
183 人が閲覧しました

How Can I Programmatically Detect and Respond to a Specific Pixel Color on My Monitor?

モニター上のピクセルの色の決定: 総合ガイド

画面ピクセル上の特定の色を効果的に検出し、後続のアクションをトリガーするには、関連する技術的な内容を理解することが不可欠です。この記事では、このタスクを達成するための非常に効率的なアプローチを紹介します。

RGB 入門

RGB カラー モデルは、定義するために赤、緑、青のコンポーネントに値を割り当てます。特定の色。各コンポーネントの範囲は 0 ~ 255 で、幅広い色相が可能です。

ピクセル カラーのキャプチャ

このプロセスの重要なステップは、選択した色のカラーをキャプチャすることです。モニター上のピクセル。これは、以下に示す GetColorAt() 関数を使用して実現できます。

public Color GetColorAt(Point location)
{
    // Create a bitmap of 1x1 pixel
    Bitmap screenPixel = new Bitmap(1, 1, PixelFormat.Format32bppArgb);

    // Get the graphics contexts for both the screen pixel and a temporary DC
    using (Graphics gdest = Graphics.FromImage(screenPixel))
    using (Graphics gsrc = Graphics.FromHwnd(IntPtr.Zero))
    {
        // Obtain the device context handles
        IntPtr hSrcDC = gsrc.GetHdc();
        IntPtr hDC = gdest.GetHdc();

        // Execute a bit-block transfer to capture the specified pixel
        BitBlt(hDC, 0, 0, 1, 1, hSrcDC, location.X, location.Y, (int)CopyPixelOperation.SourceCopy);

        // Release the device context handles
        gdest.ReleaseHdc();
        gsrc.ReleaseHdc();
    }

    // Retrieve the color of the captured pixel
    return screenPixel.GetPixel(0, 0);
}
ログイン後にコピー

この関数は、一時的なビットマップを作成し、ビットブロック転送を実行することで、指定されたピクセルの色を効果的にキャプチャします。 .

リアルタイム ピクセルポーリング

ピクセルの色をキャプチャできるようになったら、特定のピクセルの色を継続的にチェックするループを実装できます。

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

        if (c.R == color.R && c.G == color.G && c.B == color.B)
        {
            // Pixel color matches the target color, perform desired action
            DoAction();
            return;
        }

        // Slight yield to other applications
        Thread.Sleep();
    }
}
ログイン後にコピー

このループは継続的にピクセルの色を取得します。指定されたピクセルをターゲットカラーと比較します。一致すると、意図したアクションがトリガーされます。より細かく制御するには、このループを別のスレッドでラップするか、コンソール アプリケーション内で利用できます。

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

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