急切请教如何处理bmp图象的问题!!!!!!

steven_sina 2002-03-30 01:17:25
我有一个过程用来显示256色的位图,我想把位图从文件中读出后放入内存中,让后不停地调用内存中的信息用来在窗口中显示!但是不停地消耗内存,不知道怎么怎么保存好bmp信息可以不停调用而又不消耗内存?? 十分感谢!!!!!
...全文
44 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huqiming 2002-04-01
  • 打赏
  • 举报
回复
还有
m_bmBitmap.DeleteObject();
这样::DeleteObject(bitmap);就不用了。

或者m_bmBitmap.Detach();::DeleteObject(bitmap);
huqiming 2002-04-01
  • 打赏
  • 举报
回复
::DeleteObject(bitmap);

::deleteObject(m_pPalette);
delete m_pPalette;//释放指针,否则每次刷新都new而且Create()

以上两点加上,内存问题一定搞定。
steven_sina 2002-03-30
  • 打赏
  • 举报
回复
我没有MSDN,实在麻烦你能否直接告说我从上面的过程来看怎么释放,十分感谢,一定给你分!
蒋晟 2002-03-30
  • 打赏
  • 举报
回复

关于图像的显示,你可以去看MSDN里面的DIBLOOK示例
关于内存DC,你可以去看MSDN里面的DrawCli示例
steven_sina 2002-03-30
  • 打赏
  • 举报
回复
我用了两种方法都不行,还是不停地消耗内存!
第一种:
{
ASSERT(m_bPalLoaded);
CPalette* pOldPalette = pDC->SelectPalette(m_pPalette, TRUE);
pDC->RealizePalette();
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
CBitmap* pOldBitmap = dcMem.SelectObject(&m_bmBitmap);
pDC->StretchBlt(nX, nY, nWidth, nHeight, &dcMem,
nXSrc, nYSrc, nSrcWidth, nSrcHeight, SRCCOPY);
dcMem.SelectObject(pOldBitmap);
pDC->SelectPalette(pOldPalette, TRUE);
pDC->RealizePalette();
}

的二种:
{
CPaintDC dc(this);
HBITMAP bitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),path,IMAGE_BITMAP,0,
0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
ASSERT(bitmap);
HBITMAP OldBitmap;
CDC MemDC;
CRect rect;
MemDC.CreateCompatibleDC(&dc);
GetClientRect(rect);
OldBitmap=(HBITMAP)MemDC.SelectObject(bitmap);
dc.BitBlt(nX,nY,rect.Width()-20,rect.Height()-20,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject(OldBitmap);
}

以你们的视角看,我怎么实现我所说的功能呢?谢谢了!
蒋晟 2002-03-30
  • 打赏
  • 举报
回复
你用了MFC的CBitmap类,会自己给你释放。
看看是不是其他资源的问题。
steven_sina 2002-03-30
  • 打赏
  • 举报
回复
其中使用了
....
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,
szFilename,
IMAGE_BITMAP,
0, 0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_bmBitmap.Attach(hBitmap);
....
m_pPalette = new CPalette;
m_pPalette->CreatePalette (lplogpal);
....
CDC* pDC=GetDC();
....

怎么释放?谢谢!
huqiming 2002-03-30
  • 打赏
  • 举报
回复
使用GlobalAlloc
GlobalLock...GlobalFree();
再注意GDI的句柄及时删除。
蒋晟 2002-03-30
  • 打赏
  • 举报
回复
LoadBitmap之后用完了要DeleteObject
288794 2002-03-30
  • 打赏
  • 举报
回复
是否使用了有关的 GDI 对象创建函数创建了 GDI 对象而没有释放.

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧