关于MFC CBitmap

2024-12-27 04:54:16
推荐回答(6个)
回答1:

一共有多少个数据?如果数据量巨大的话,尽量将位图加大,一张位图上多画些数据。通过偏移值来区分不同部分的数据。
例如(0,0)-(180,10)画前180个数据,接下来的(180,10)-(180,20)画第二部分180个数据。

...CBitmap跟HBITMAP其实是一个东东,所以用CBitmap出现的问题用HBITMAP一样会出现:每个进程的GDI句柄数是由限制的,具体请看HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows下面的键值:GDIProcessHandleQuota,一般值为0x2710

回答2:

试试句柄:
CDC MemDC;
HBITMAP cache;
pMemDC->CreateCompatibleDC(pDC); //
bitmap->CreateCompatibleBitmap(pDC,maxright,maxhight); //
CBitmap *pOldBmp = pMemDC->SelectObject(bitmap); //
pMemDC->FillSolidRect(0,0,maxright,maxhight,RGB(0,0,0)); //
...//绘图
//vecBmp.push_back(bitmap);//将位图指针存入vector
vecBmp.push_back(cache);

pMemDC->SelectObject(pOldBmp);//
pMemDC->DeleteDC();//
pMemDC = NULL;//
pOldBmp = NULL;//
自己修改下。

回答3:

不要用位图指针,用位图对象试试,
你的向量里面有对象的引用,所以对象一直是有效的,不会退出函数就无效的。
对于DC也用对象就好了。
CDC pMemDC ;
pMemDC .DeleteDC();

回答4:

还是把你的代码附上吧,不然很难理解你的描述。

回答5:

这个问题没有碰到过

回答6:

你快结贴吧?