如何绘画文字到指定内存块呢?
我现在的做法就是用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中了