首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

怎么绘画文字到指定内存块呢

2012-08-13 
如何绘画文字到指定内存块呢?我现在的做法就是用GDI绘画后再复制过去,但是我觉得太慢了,而且浪费CPU有没有

如何绘画文字到指定内存块呢?
我现在的做法就是用GDI绘画后再复制过去,但是我觉得太慢了,而且浪费CPU
有没有什么方法能直接画过去呢?

[解决办法]
获取DC 直接绘制
[解决办法]
貌似windows的都需要DC才能绘画的
[解决办法]
dc 贴图
[解决办法]
你那个内存块就是图片了,把那个图片装入内存dc中,然后就在内存dc中作图!
windows的作图函数都需要在dc中操作的!
[解决办法]
设备无关位图,可能是你需要的.
CreateDIBSection.

CONST int BIT_COUNT24 = 24;
int iWidth=width;
int iHeight=height;
BITMAPINFO bmpInfo={0};
int bmpWidthBytes =0;
bmpWidthBytes= iWidth*BIT_COUNT24;//4字节对齐,位图每一行数据的大小.
bmpWidthBytes+=31;
bmpWidthBytes/=32;
bmpWidthBytes*=4;
//bmpWidthBytes=bmpWidthBytes*iHeight;
ZeroMemory(&bmpInfo,sizeof(BITMAPINFO));
bmpInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bmpInfo.bmiHeader.biBitCount=BIT_COUNT24;
bmpInfo.bmiHeader.biCompression=BI_RGB;
bmpInfo.bmiHeader.biPlanes=1;
bmpInfo.bmiHeader.biWidth=iWidth;
bmpInfo.bmiHeader.biHeight=-iHeight;//为了正常顺序访问
BYTE *pBmpBits=NULL;
HBITMAP hBmp=::CreateDIBSection(NULL,&bmpInfo,0,(void**)&pBmpBits,NULL,0);

CDC memDC;
memDC.CreateCompatibleDC(pDC);

HBITMAP hOldBmp=(HBITMAP)::SelectObject(memDC.m_hDC,hBmp);

这样的文字就可以直接绘制到 pBmpBits 这个buf中了

热点排行