我想在程序中做一个缩略图的效果:把视图(VIEW)里所显示的内容作为缩略显示在一个控件中,如LISTCTRL里。起初我用的较笨的方法,即用BITBLT拷贝窗口内容的方式。但是这种方法有个致命的弱点,就是当窗口的一部分被其他窗口遮住的时候,被遮住的部分是无法显示的。而且好像效率也不高,因为我想做成像WORD那样,当页面内容有改动的时候,缩略图也相应有体现。
在网上找了很久,没有什么头绪,讲的最多就是缩略图片,那个方法对我这个程序好像不适用。不知道谁做过类似的功能没有,讲讲思路也好啊。谢谢了先。
在网上找了很久,没有什么头绪,讲的最多就是缩略图片,那个方法对我这个程序好像不适用。不知道谁做过类似的功能没有,讲讲思路也好啊。谢谢了先。
唯一办法是:把VIEW的绘制集中到一个函数里,如:Draw(HDC hDC);
OnPaint的时候调用用这个函数
缩略的时候也用这个, 然后把图片缩略后使用.
再调用LVN_GETDISPINFO消息函数,就可以实现和微软一样的效果了兄弟,多给点分,穷啊
你说的这种方法我曾经也考虑过,但是当视图很多的时候(因为我的这个系统主要是做文档处理的,所有会有很多页,即很多VIEW),那么如你所说的方法视图就会又增一倍,这样会系统的效率是否会有很大影响呢?
???hehe 这个行不?? 或者干脆弄成永远在前方显示.
就不会出现这问题了。
HWND hwnd, // Window to copy
HDC hdcBlt, // HDC to print into
UINT nFlags // Optional flags
);
唯一的问题是,这是xp新增的api
缩略图view永远只有一个。在你切换view的时候,你要切换 缩略图view的文档为你的当前view的文档
所以我的思路只回增加一个view而已,不绘增加一倍的。 此思路肯定可行,我们的类似Coredraw的软件中的缩略图(或者说叫导航图)就是这样做的。性能如果有问题,是你的绘制太慢,应该优化你的渲染速度。
谢谢你的回复,我去试试看。