⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dib.txt

📁 用Visual C++编写的地震记录显示程序
💻 TXT
字号:
void CWzdBitmap::CreateBitmapEx(CSize size)
{
	bitmapSize=size;
	dcScreen.Attach(::GetDC(NULL)); 
	dcMem.CreateCompatibleDC(&dcScreen) ;
	CreateCompatibleBitmap(&dcScreen,size.cx ,size.cy );
	dcMem.SelectObject(this) ;
}

CDC* CWzdBitmap::GetDC()
{
	return (&dcMem);
}

void CWzdBitmap::PrepareBitmap()
{
	int nColors=(1<<(dcScreen.GetDeviceCaps(BITSPIXEL)*dcScreen.GetDeviceCaps(PLANES)));
	LOGPALETTE *pLogPal=(LOGPALETTE*)new BYTE(sizeof(LOGPALETTE)+(nColors*sizeof(PALETTEENTRY)));
	pLogPal->palVersion=0x300;
	pLogPal->palNumEntries=nColors;

	::GetSystemPaletteEntries(dcScreen.m_hDC,0,nColors,(LPPALETTEENTRY)(pLogPal->palPalEntry ));
	m_Palette=new CPalette;
	m_Palette->CreatePalette(pLogPal) ;
	delete[] pLogPal;
	dcMem.DeleteDC();
	::ReleaseDC(NULL,dcScreen.Detach());
	m_Width=bitmapSize.cx ;
	m_Height=bitmapSize.cy ;
		
}


HANDLE CWzdBitmap::CreatDIB(int *pbmData)
{
	//creat header
	BITMAPINFOHEADER bi;
	memset(&bi,0,sizeof(bi));
	bi.biSize =sizeof(BITMAPINFOHEADER) ;
	bi.biPlanes=1;
	bi.biCompression=BI_RGB;
	
	BITMAP bm;
	GetObject(sizeof(bm),(LPSTR)&bm);
	bi.biWidth =bm.bmWidth;
	bi.biHeight=bm.bmHeight;
	
	int bits=bm.bmPlanes*bm.bmBitsPixel;
	if(bits<=1) bi.biBitCount=1;
	else if(bits<=4) bi.biBitCount=4;
	else if(bits<=8) bi.biBitCount=8;
	else
		bi.biBitCount=24;
	int biColorSize=0;
	if(bi.biBitCount!=24) biColorSize=(1<<bi.biBitCount);
	biColorSize*=sizeof(RGBQUAD);
	bi.biSizeImage=(((bi.biSizeImage ) +31)/32)*4;
	bi.biSizeImage *=bm.bmHeight;

	if(pbmData) *(pbmData)=bi.biSize+biColorSize;
	HANDLE hDIB=::GlobalAlloc(GHND,bi.biSize +biColorSize+bi.biSizeImage );
	LPBITMAPINFOHEADER lpbi=(LPBITMAPINFOHEADER)::GlobalLock(hDIB);
	*lpbi=bi;
	CDC  dc;
	dc.Attach (::GetDC(NULL));
	CPalette *pPal=dc.SelectPalette(m_Palette,FALSE);
	dc.RealizePalette();
	return hDIB;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -