CScrollView显示大图像的有关问题,有代码!50分急求!
CScrollView显示大图像的问题,有代码!50分急求!!!
CScrollView中实现大图片的显示:
OnPaint()函数:
LPSTR lpBuffer = (char *)m_ImageData;
CClientDC dc(this);
m_hBitmap = CreateDIBitmap(dc.m_hDC,&bmInfo.bmiHeader,CBM_INIT,lpBuffer,
(PBITMAPINFO)&bmInfo,DIB_RGB_COLORS);//lpBuffer为内存中的图像数据
HBITMAP OldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
OldBitmap=(HBITMAP)MemDC.SelectObject(m_hBitmap);
pDC-> BitBlt(0,0,2000,2000,&MemDC,0,0,SRCCOPY);//图像大小2000*2000
MemDC.SelectObject(OldBitmap);
CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx =2000;//图像大小
sizeTotal.cy =2000;
SetScrollSizes(MM_TEXT, sizeTotal);
//////////////////////////
为什么滚动后,图片被擦掉了呢?
谢谢各位!!!!急!!!
------解决方案--------------------
需要触发WM_PAINT,用UpdateWindow
------解决方案--------------------
或者将OnPaint的内容放到OnDraw中。
------解决方案--------------------
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
//---------------------------
你OnPaint()函数中上面这个语句去掉没..?
没的话
//掉
试试...
CScrollView中实现大图片的显示:
OnPaint()函数:
LPSTR lpBuffer = (char *)m_ImageData;
CClientDC dc(this);
m_hBitmap = CreateDIBitmap(dc.m_hDC,&bmInfo.bmiHeader,CBM_INIT,lpBuffer,
(PBITMAPINFO)&bmInfo,DIB_RGB_COLORS);//lpBuffer为内存中的图像数据
HBITMAP OldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
OldBitmap=(HBITMAP)MemDC.SelectObject(m_hBitmap);
pDC-> BitBlt(0,0,2000,2000,&MemDC,0,0,SRCCOPY);//图像大小2000*2000
MemDC.SelectObject(OldBitmap);
CSize sizeTotal;
// TODO: calculate the total size of this view
sizeTotal.cx =2000;//图像大小
sizeTotal.cy =2000;
SetScrollSizes(MM_TEXT, sizeTotal);
//////////////////////////
为什么滚动后,图片被擦掉了呢?
谢谢各位!!!!急!!!
------解决方案--------------------
需要触发WM_PAINT,用UpdateWindow
------解决方案--------------------
或者将OnPaint的内容放到OnDraw中。
------解决方案--------------------
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
//---------------------------
你OnPaint()函数中上面这个语句去掉没..?
没的话
//掉
试试...