首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

缩略图的有关问题

2012-01-16 
缩略图的问题问题是这样的:我在一个ScrollView中画图,并且画布大于可视区,在实现画图区的缩略图时,怎样才

缩略图的问题
问题是这样的:我在一个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是要分三步进行的。

热点排行