读书人

CreateDIBSection有关问题位图有关问

发布时间: 2012-03-29 12:53:13 作者: rapoo

CreateDIBSection问题,位图问题
这个是源代码,我的问题是,我怎么修改m_pBuf来绘画自己想要的位图,比如我想画个圆,怎么实现?
[code=C/C++][/code]CDC memDC;
memDC.CreateCompatibleDC(&dc);
BITMAPINFOHEADER bmih;
bmih.biSize=sizeof(BITMAPINFOHEADER);
bmih.biHeight=LCD_HEIGHT;
bmih.biWidth=LCD_WIDTH;
bmih.biPlanes=1;
bmih.biCompression=BI_RGB;
bmih.biSizeImage=LCD_HEIGHT*LCD_WIDTH*3;
bmih.biBitCount=24

char *m_pBuf;
HBITMAP hBitmap=CreateDIBSection(NULL,(BITMAPINFO*)&bmih,DIB_RGB_COLORS,(void**)&m_pBuf,NULL,0);
memset(m_pBuf,100,LCD_HEIGHT*LCD_WIDTH*3);
CBitmap bmp;
bmp.Attach(hBitmap);
CBitmap* pOldBmp=memDC.SelectObject(&bmp);
CBrush brush(&bmp);
CBrush* pOldBrush=memDC.SelectObject(&brush);
memDC.FillSolidRect(0,0,320,128,m_down_color);
memDC.FillRect(CRect(0,0,LCD_WIDTH,LCD_HEIGHT),&brush);
dc.FillRect(CRect(0,0,LCD_WIDTH,LCD_HEIGHT),&brush);

[解决办法]
CreateDIBSecton()函数创建了一个设备无关位图。
其返回的句柄表示这个位图资源。
你创建一个内存DC,将该为图选到DC里面。然后用DC绘图。所绘的图就保存到该位图上了。

C/C++ code
CBitmap bmp'bmp.Attach(hBitmap)...CDC memDC;memDC.SelectObject(bmp);...memDC.MoveTo()memDC.LineTo() 

读书人网 >VC/MFC

热点推荐