Menentukan Warna Piksel pada Monitor: Panduan Komprehensif
Untuk mengesan warna tertentu pada piksel skrin dengan berkesan dan mencetuskan tindakan seterusnya, adalah penting untuk memahami teknikal yang terlibat. Artikel ini membentangkan pendekatan yang sangat cekap untuk menyelesaikan tugas ini.
Bermula dengan RGB
Model warna RGB memberikan nilai kepada komponen merah, hijau dan biru untuk ditakrifkan warna tertentu. Setiap komponen berjulat dari 0 hingga 255, membolehkan spektrum rona yang luas.
Merakam Warna Piksel
Langkah penting dalam proses ini ialah menangkap warna yang dipilih piksel pada monitor anda. Ini boleh dicapai menggunakan fungsi GetColorAt() yang dibentangkan di bawah:
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); }
Fungsi ini secara berkesan menangkap warna piksel yang ditentukan dengan mencipta peta bit sementara dan melaksanakan pemindahan blok bit .
Piksel Masa Nyata Undian
Setelah anda mempunyai keupayaan untuk menangkap warna piksel, anda boleh melaksanakan gelung yang memeriksa warna piksel tertentu secara berterusan:
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(); } }
Gelung ini akan mendapatkan semula warna secara berterusan piksel yang ditentukan dan bandingkan dengan warna sasaran. Apabila perlawanan, ia akan mencetuskan tindakan yang dimaksudkan. Untuk kawalan yang lebih halus, anda boleh membalut gelung ini dalam benang yang berasingan atau menggunakannya dalam aplikasi konsol.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan dan Membalas Secara Pengaturcaraan kepada Warna Piksel Tertentu pada Monitor Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!