缩略图的问题
问题是这样的:我在一个ScrollView中画图,并且画布大于可视区,
在实现画图区的缩略图时,怎样才能取得整个画布(包括滚动出可视区的部分)的图像呢?
CFrameWnd* pFrame;
pFrame=(CFrameWnd*)theApp.GetMainWnd();
CScrollView* pView=(CScrollView*)pFrame-> GetActiveView();
CDC* pDC=pView-> GetDC();
CSize szTotalSource;
szTotalSource=pView-> GetTotalSize();
CRect rectTotalSource(0,0,szTotalSource.cx,szTotalSource.cy);//整个画布
dc.StretchBlt(0,0,rectDest.Width(),rectDest.Height(),pDC,
0,0,rectTotalSource.Width(),rectTotalSource.Height(),SRCCOPY );.Height(),SRCCOPY );
上面代码的结果是,把ScrollView外部的画面(如状态栏)也纳入了缩略图,但ScrollView中滚动出可视区的部分却显示不了,
各位大侠给个招吧!
[解决办法]
pDC可以指向任何一个DC
dc是用来建立兼容的memDc,以及用来显示内存Bitmap m_MemBitmap
memDC是真正用来画图的
在这里你的CBitmap*不是全局的,所以你画的东西无法暂存
m_MemBitmap可以说是一张看不见的纸,你在这张纸上把图画好,再分别贴在ScrollView和预览区中
缓冲用的CBitmap必须是全局的
创建内存Bitmap、绘制内存Bitmap、显示内存Bitmap是要分三步进行的。