2012-12-12 2 views
0

다음 코드를 사용하여 특정 픽셀 위치에서 RGB 색상을 가져옵니다.픽셀 차트 비교

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); 
} 

그러나 10x10 픽셀과 같은 차트를 저장할 수있는 방법이 있습니까? 내 목표는 하나의 차트를 다른 차트와 비교하여 동일한 차트인지 확인하는 것입니다.

당신은 예처럼 (당신이 크기를 확인해야하는 경우, 화면보다 큰 비트 맵을 생성하지 않는 가정) 사본 당신이 원하는 어떤 크기의 Bitmap로 화면의 일부 방법을 만들 수

답변

1

:

public Bitmap GetPartOfTheScreen(Point location, Size size) 
{ 
    Bitmap screenPartCopy = new Bitmap(size.Width, size.Height); 
    using (Graphics gdest = Graphics.FromImage(screenPartCopy)) 
    { 
     using (Graphics gsrc = Graphics.FromHwnd(IntPtr.Zero)) 
     { 
      IntPtr hSrcDC = gsrc.GetHdc(); 
      IntPtr hDC = gdest.GetHdc(); 
      int retval = BitBlt(hDC, 0, 0, size.Width, size.Height, hSrcDC, location.X, location.Y, (int)CopyPixelOperation.SourceCopy); 
      gdest.ReleaseHdc(); 
      gsrc.ReleaseHdc(); 
     } 
    } 

    return screenPartCopy; 
} 

는 화면의 일부를 얻을 때 당신은 GetPixel (느린 방식)를 사용하여 픽셀 색상을 비교할 수 또는 픽셀을 비교하기 위해 비트 맵 클래스의 LockBits하는 방법을 활용할 수있다.

+0

감사합니다. 필요한 것만 큼 좋습니다! – Johan

+0

문제 없습니다. 기꺼이 도와 드리겠습니다. –