2013-06-27 2 views
0

붉은 색으로 이미지 (개 개요)를 채우기 위해 홍수 채우기 방법을 쓰고 있습니다.홍수 채우기 및 RGB 값

내 TestShellDlg.cpp에 홍수 채우기 방법입니다. CTestShellDlg :: m_pScreenDib 멤버는 그래픽이 포함 된 CDIB32 비트 맵 클래스이며 그립니다.

현재 픽셀을 샘플링하고 검정색 (윤곽선의 색)이 아닌 경우 빨간색으로 표시합니다. TestShellDlg.cpp 클래스 내 플러드 필 방법 여기

void CDIB32::GetRGB(int x, int y, BYTE& r, BYTE& g, BYTE& b) 
{ 
    if (x >= Width() || y >= Height()) 
     IERROR; 

    int off = y * ByteWid() + x * 4; 
    b = m_pBits[off]; 
    g = m_pBits[off+1]; 
    r = m_pBits[off+2]; 
} 

그리고있다 :

void CTestShellDlg::FloodFill(CPoint& mid) 
{ 

    //while the current pixel colour is not black, set it to red and recursively loop 
    m_pScreenDib ->GetRGB(mid.x,mid.y, (byte)& r,(byte)& g,(byte)& b); 
     while(r !=(byte)0, g !=(byte)0, b !=(byte)0) 
     { 
      m_pScreenDib -> SetRGB(mid.x, mid.y,(byte)255,(byte) 0,(byte) 0); 
      mid.x++; 
      FloodFill(mid); 
      mid.x--; 
      FloodFill(mid); 
      mid.y++; 
      FloodFill(mid); 
      mid.y--; 
      FloodFill(mid); 
     } 

} 

문제는, 그것은 R, G, B를 말하고 이것은 Dib32.cpp 클래스의 게터입니다 정의되지 않았습니다. 이유가 확실하지 않습니다. 어떤 도움이라도 대단히 감사합니다.

답변

0
당신은 당신이 그들을 사용하기 전에 선언 할 필요가

byte r,g,b; 
m_pScreenDib ->GetRGB(mid.x,mid.y, (byte)& r,(byte)& g,(byte)& b); 
+0

전설 선생님을 (당신은 매개 변수 목록에서 인라인을 선언 할 수 없습니다)! 많은 감사 –

관련 문제