[MFC] CxImage 1비트 이미지 만들기...
MFC&ActiveX 2008. 7. 9. 21:03 |흑백의 이미지를 CxImage로 만들때 8비트, 24비트의 이미지로 만들 필요가 없습니다.
이때 1비트의 이미지로 해도 충분한 공간이 나온다는 얘긴데요.
아래의 코드는 1비트의 이미지를 생성하는 코드 입니다.
void GToleranceImage::MakeBuffer2Image()
{
SAFE_DELETE( _pbuffer2Image );
assert( _pbuffer2Image == NULL );
// 넓이와 폭을 사용해서 이미지 버퍼를 생성합니다.
// 이때 1비트의 이미지로 설정합니다.
_pbuffer2Image = new CxImage( _width, _height, 1, CXIMAGE_FORMAT_BMP );
// 이미지의 팔레트를 지정합니다.
// 흑백 이미지를 만들거기 때문에 0번과 1번 팔레트를 설정합니다.
_pbuffer2Image->SetPaletteColor(0, RGB(0, 0, 0));
_pbuffer2Image->SetPaletteColor(1, RGB(255, 255, 255));
// 해당 내용을 추가합니다.
// SetPixelColor로 하지 않고, SetPixelIndex로 하게 됩니다.
for( int y = 0; y < _height; y++ )
{
for( int x = 0; x < _width; x++ )
{
BYTE color = _bufferXY[y][x];
if( color == 255 )
_pbuffer2Image->SetPixelIndex( x, y, 1 );
else
_pbuffer2Image->SetPixelIndex( x, y, 0 );
}
}
_pbuffer2Image->Flip();
}