후속 작업을 트리거하기 위한 화면 픽셀 색상 결정
소프트웨어 개발에서는 특정 화면 픽셀의 색상을 검색해야 하는 경우가 많습니다. 다양한 목적. 이 기능은 사용자 입력과의 상호 작용이나 화면의 특정 시각적 요소 감지가 필요한 애플리케이션에 특히 유용합니다.
픽셀 색상을 효율적으로 읽기
색상을 정확하게 얻으려면 모니터의 특정 픽셀 색상을 파악하려면 해당 좌표로 픽셀 위치를 식별하는 방법을 활용하는 것이 좋습니다. 다음 코드 조각은 이 접근 방식을 보여줍니다.
[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); }
이 코드는 기본적으로 현재 커서 위치의 픽셀을 캡처합니다. 임의의 픽셀 위치에서 색상을 얻으려면 Point 매개변수에 원하는 좌표를 지정하기만 하면 됩니다.
후속 작업 트리거
픽셀 색상이 있으면 다음을 수행할 수 있습니다. 다른 기능의 트리거로 사용하십시오. 예를 들어 특정 작업을 실행하기 위해 픽셀 색상이 미리 정의된 특정 색상과 일치하는지 확인할 수 있습니다. 다음 코드 블록은 이 개념을 보여줍니다.
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() }
이 코드는 지정된 픽셀 위치를 지속적으로 폴링하여 해당 색상을 예상 색상과 비교합니다. 일치하는 항목이 발견되면 DoAction() 함수를 호출하고 while 루프를 종료합니다. DoAction()을 사용자 정의 코드 블록 실행이나 이벤트 트리거와 같은 원하는 작업으로 대체할 수 있습니다.
위에 설명된 기술을 활용하면 화면 픽셀의 색상을 효과적으로 검색하여 활용할 수 있습니다. 소프트웨어 애플리케이션에서 후속 작업을 트리거하여 화면 및 사용자 입력과 동적으로 상호 작용할 수 있습니다.
위 내용은 내 소프트웨어에서 작업을 트리거하기 위해 화면 픽셀의 색상을 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!