確定顯示器上的像素顏色:綜合指南
要有效檢測螢幕像素上的特定顏色並觸發後續操作,了解所涉及的技術細節非常重要。本文提出了一種高效率的方法來完成此任務。
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中文網其他相關文章!