Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Warna Piksel Skrin untuk Mencetuskan Tindakan dalam Perisian Saya?

Bagaimanakah Saya Boleh Mendapatkan Warna Piksel Skrin untuk Mencetuskan Tindakan dalam Perisian Saya?

Susan Sarandon
Lepaskan: 2024-12-29 20:43:10
asal
207 orang telah melayarinya

How Can I Get a Screen Pixel's Color to Trigger Actions in My Software?

Menentukan Warna Piksel Skrin untuk Mencetuskan Tindakan Seterusnya

Dalam pembangunan perisian, selalunya perlu untuk mendapatkan semula warna piksel skrin khusus untuk pelbagai tujuan. Keupayaan ini amat berguna untuk aplikasi yang memerlukan interaksi dengan input pengguna atau pengesanan elemen visual tertentu pada skrin.

Membaca Warna Piksel Dengan Cekap

Untuk mendapatkan dengan tepat warna piksel tertentu pada monitor anda, kami mengesyorkan anda menggunakan kaedah yang mengenal pasti lokasi piksel dengan koordinatnya. Coretan kod berikut menunjukkan pendekatan ini:

[DllImport("user32.dll")]
static extern bool GetCursorPos(ref Point lpPoint);

[DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
public static extern int BitBlt(IntPtr hDC, int x, int y, int nWidth, int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, int dwRop);

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);
}
Salin selepas log masuk

Kod ini pada asasnya menangkap piksel pada lokasi kursor semasa. Untuk mendapatkan warna di mana-mana lokasi piksel sewenang-wenangnya, hanya nyatakan koordinat yang dikehendaki dalam parameter Titik.

Pencetus Tindakan Seterusnya

Setelah anda mempunyai warna piksel, anda boleh gunakannya sebagai pencetus untuk fungsi lain. Sebagai contoh, anda boleh menyemak sama ada warna piksel sepadan dengan warna pratakrif tertentu untuk melaksanakan tindakan tertentu. Blok kod berikut menggambarkan konsep ini:

while(true)
{
    var c = GetColorAt(location);

    if (c.R == color.R &&& c.G == color.G &&& c.B == color.B)
    {
        DoAction();
        return;
    }

    // Sleep until other applications yield CPU time
    Thread.Sleep()
}
Salin selepas log masuk

Kod ini secara berterusan meninjau lokasi piksel yang ditentukan, membandingkan warnanya dengan warna yang dijangkakan. Jika padanan ditemui, ia menggunakan fungsi DoAction() dan keluar dari gelung while. Anda boleh menggantikan DoAction() dengan tindakan yang anda inginkan, seperti melaksanakan blok kod tersuai atau mencetuskan acara.

Dengan menggunakan teknik yang diterangkan di atas, anda boleh mendapatkan semula warna piksel skrin dengan berkesan dan menggunakannya untuk mencetuskan tindakan seterusnya dalam aplikasi perisian anda, membolehkan anda berinteraksi dengan skrin dan input pengguna secara dinamik.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Warna Piksel Skrin untuk Mencetuskan Tindakan dalam Perisian Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan