VC++)GetPixel로 픽셀값을 얻었는데 255만 나오네여.꼭좀봐주세여

VC++)GetPixel로 픽셀값을 얻었는데 255만 나오네여.꼭좀봐주세여

작성일 2006.07.14댓글 1건
    게시물 수정 , 삭제는 로그인 필요

제목 그대로 GetPixel로 픽셀값을 얻었는데 255만 나오네여.

 

 

//이미지 출력하기

 

    CDC MemDC;

    MemDC.CreateCompatibleDC(pDC);

    CBitmap MyBitmap,*pOldBitmap;

    MyBitmap.LoadBitmap(IDB_BITMAP1);

    pOldBitmap=MemDC.SelectObject(&MyBitmap);

    pDC->BitBlt(0,0,200,200,&MemDC,0,0,SRCCOPY);

    MemDC.SelectObject(pOldBitmap);

 

//

   

 

 //지정된 한 부분의 픽셀값 얻기

   COLORREF cr=GetPixel(MemDC,111,111);

   int r=GetRValue(cr);

   int g=GetGValue(cr);

   int b=GetBValue(cr);

   CString str;

   str.Format("r=%d,g=%d,b=%d",r,g,b);

   pDC->TextOut(400,100,str);

 

 

 

이러면 r=255 g=255 b=255 이렇게 나오거든여..

 

좌표를 바꿔도 같은숫자가 나오고

 

이미지밖이라면 -1을 출력한다는데..

 

어디서 잘못된거져..?

 

초보의 질문이었습니다..



profile_image 익명 작성일 -

GetPixel의 인자인 MemDC를 사용할 때 SelectObject(pOldBitmap)으로 먼저 해제했기

때문입니다. 위치를 바꿔주면 됩니다.

 

//이미지 출력하기

 

    CDC MemDC;

    MemDC.CreateCompatibleDC(pDC);

    CBitmap MyBitmap,*pOldBitmap;

    MyBitmap.LoadBitmap(IDB_BITMAP1);

    pOldBitmap=MemDC.SelectObject(&MyBitmap);

    pDC->BitBlt(0,0,200,200,&MemDC,0,0,SRCCOPY);

//    MemDC.SelectObject(pOldBitmap);

 

//

   

 

 //지정된 한 부분의 픽셀값 얻기

   COLORREF cr=GetPixel(MemDC,111,111);

   int r=GetRValue(cr);

   int g=GetGValue(cr);

   int b=GetBValue(cr);

   CString str;

   str.Format("r=%d,g=%d,b=%d",r,g,b);

   pDC->TextOut(400,100,str);

    MemDC.SelectObject(pOldBitmap);