오전 10:58 2000/11/08 조경민
파레트 in MemoryDC 비트맵
=============================================
// 원본 DC
HDC hSDC = ::GetDC(::GetActiveWindow());
//HDC hSDC = ::CreateDC("DISPLAY",NULL,NULL,NULL);
// 현재 Bit Per Pixel 얻어오기
int nBPP = GetDeviceCaps( hSDC, BITSPIXEL );
// Create MemDC
HDC hMDC = ::CreateCompatibleDC( hSDC );
// Create MemBitmap
HBITMAP hBitmap = ::CreateCompatibleBitmap( hSDC, lpInfo->szScreen.cx, lpInfo->szScreen.cy );
// Apply MemBitamp to MemDC
::SelectObject( lpInfo->hDC, hBitmap );
// 8비트면 파레트 적용
if( nBPP == 8 )
{
UINT nSize = sizeof(LOGPALETTE) + (sizeof(PALETTEENTRY) * 256);
LOGPALETTE *pLP = (LOGPALETTE *) new BYTE[nSize];
pLP->palVersion = 0x300;
pLP->palNumEntries = 256 ;
for( int i=0; i < 256 ; i++)
{
pLP->palPalEntry[i].peRed = (BYTE) (((i >> 5) & 0x07) * 255 / 7);
pLP->palPalEntry[i].peGreen = (BYTE) (((i >> 2) & 0x07) * 255 / 7);
pLP->palPalEntry[i].peBlue = (BYTE) (((i >> 0) & 0x03) * 255 / 3);
pLP->palPalEntry[i].peFlags = 0;
}
m_hPal = CreatePalette( pLP );
// 파레트를 메모리 DC에 적용
SelectPalette( hMDC, m_hPal, FALSE );
RealizePalette( hMDC);
delete[] pLP;
MessageBox( NULL, "파레트 적용", "8비트 컬러", MB_OK);
}
// hMDC에 그리면 된다.
파레트 in MemoryDC 비트맵
=============================================
// 원본 DC
HDC hSDC = ::GetDC(::GetActiveWindow());
//HDC hSDC = ::CreateDC("DISPLAY",NULL,NULL,NULL);
// 현재 Bit Per Pixel 얻어오기
int nBPP = GetDeviceCaps( hSDC, BITSPIXEL );
// Create MemDC
HDC hMDC = ::CreateCompatibleDC( hSDC );
// Create MemBitmap
HBITMAP hBitmap = ::CreateCompatibleBitmap( hSDC, lpInfo->szScreen.cx, lpInfo->szScreen.cy );
// Apply MemBitamp to MemDC
::SelectObject( lpInfo->hDC, hBitmap );
// 8비트면 파레트 적용
if( nBPP == 8 )
{
UINT nSize = sizeof(LOGPALETTE) + (sizeof(PALETTEENTRY) * 256);
LOGPALETTE *pLP = (LOGPALETTE *) new BYTE[nSize];
pLP->palVersion = 0x300;
pLP->palNumEntries = 256 ;
for( int i=0; i < 256 ; i++)
{
pLP->palPalEntry[i].peRed = (BYTE) (((i >> 5) & 0x07) * 255 / 7);
pLP->palPalEntry[i].peGreen = (BYTE) (((i >> 2) & 0x07) * 255 / 7);
pLP->palPalEntry[i].peBlue = (BYTE) (((i >> 0) & 0x03) * 255 / 3);
pLP->palPalEntry[i].peFlags = 0;
}
m_hPal = CreatePalette( pLP );
// 파레트를 메모리 DC에 적용
SelectPalette( hMDC, m_hPal, FALSE );
RealizePalette( hMDC);
delete[] pLP;
MessageBox( NULL, "파레트 적용", "8비트 컬러", MB_OK);
}
// hMDC에 그리면 된다.
'KB > MFC/Win32' 카테고리의 다른 글
MemoryDC 만들기 (0) | 2004.03.19 |
---|---|
ASP 업로드 컴포넌트 만들기 (0) | 2004.03.19 |
트리 에디트 가능하게 하기 (0) | 2004.03.19 |
툴바 리바 색깔 바꾸기 (0) | 2004.03.19 |
윈도우 타이틀 깜빡거리게 하기 (0) | 2004.03.19 |