3

現在、スクリーンショットを撮り、指定した色と一致するかどうかを一度に 1 つずつチェックする次のコードがあります。一致する場合は、マウスを特定のピクセル位置に移動します。

誰かが助けてくれるなら、私は現在、これを行うためのより良い、より速い方法を探しています.

コード全体を読みたくない場合は、ここでプロセスを説明します。基本的に、プログラムはスクリーンショットを撮り、一度に 1 ピクセルずつ分析して、目的の色と比較します。左上のピクセルから開始し、水平方向に 1 行ずつ下に移動し、ピクセルが見つからない場合は再起動します。このコードは、1080p 画面でのみ機能しますが、これは私にとっては問題ありません。

コードが機能するようになりました。200万以上のピクセルをスキャンするよりも効率的な方法を探しています。

Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
              Screen.PrimaryScreen.Bounds.Height);
        Graphics graphics = Graphics.FromImage(bitmap as Image);
        graphics.CopyFromScreen(0, 0, 0, 0, bitmap.Size);

        bool found = false;

        bool one = true;
        bool two = false;

        int x = 0;
        int y = 0;

        Bitmap myBitmap = bitmap;
        while (found != true)
        {
            Color pixelColor = myBitmap.GetPixel(x, y);
            if (pixelColor == Color.FromArgb(0, 0, 0))
            {
                Cursor.Position = new Point(x, y);
                found = true;
            }
            if (one == true)
            {
                x = x + 1;
                if (x >= 1920)
                {
                    one = false;
                    two = true;
                    x = 0;
                }
            }
            else if (two == true)
            {
                y = y + 1;
                if (y >= 1080)
                {
                    y = 0;
                }
                one = true;
                two = false;
            }
        }
4

1 に答える 1