以前用过一些放大程序,包括windows自带的放大镜,还有zoomit等程序,
其主要功能都是把整个屏幕上鼠标位置处的图像进行放大,以方便眼神不好的人看。
做的差的就是直接点阵放大,好一点的会加点防锯齿的算法,看起来舒服些,
可是,当我看到了这个软件。。ZoomText的时候,
我真的几乎不敢相信自己的眼睛了:这个软件居然把屏幕上所有出现文字的地方都无锯齿的放大了!
一开始以为是这个软件的防锯齿算法比较好,但后来仔细看了下,确实是矢量放大!
真不知道怎么能做到这样,真是太神奇了。老外对技术的理解和实现真是让人佩服,技术无止境啊。
其主要功能都是把整个屏幕上鼠标位置处的图像进行放大,以方便眼神不好的人看。
做的差的就是直接点阵放大,好一点的会加点防锯齿的算法,看起来舒服些,
可是,当我看到了这个软件。。ZoomText的时候,
我真的几乎不敢相信自己的眼睛了:这个软件居然把屏幕上所有出现文字的地方都无锯齿的放大了!
一开始以为是这个软件的防锯齿算法比较好,但后来仔细看了下,确实是矢量放大!
真不知道怎么能做到这样,真是太神奇了。老外对技术的理解和实现真是让人佩服,技术无止境啊。
这应该是类似于词典软件的取词吧,HOOK了ExTextOut函数,然后强制放大的地方重绘,修改ExTextOut输出的文字大小,这样就不会出现缩放失真了
ExTextOut函数好像不能定义文字大小的吧?
很有名呦。
自己什么时候学到设计这样软件的程度?
学习中
CreateFont:用来在创建字体的时候就放大
ExtTextOut:修改Textout的坐标,因为窗口放大后坐标也会发生变化
我觉得窗口放大了以后计算坐标位置是不太容易的。
另外可能还需要别的函数,暂时想不出来。
图像中的文字不可能无损放大的。
理论上唯一可行的方法是先OCR出来,然后矢量放大,然后覆盖在原来的文字上。实现的可能性基本为零。
谁要是能实现这个功能,我把我第三个女朋友让给他,嘿嘿
滚动的文字可以实时无失真放大,网页中的动画可以实时放大,而且在用kmplayer播放文件的窗口也能实时放大!
放大时CPU占用在10-20%之间。
还有他的放大窗口可能是用了DirectX,截屏是截不到他放大窗口的,因此他可以捕捉放大窗口下的东西。
1. 创建 Image driver。 镜像驱动会获得当前显示输出的实时拷贝,注意,不是像素拷贝,而是所有GDI操作的重复,所以镜像和实际显示完全一致而且非常高效。感兴趣的可以查一下显卡的镜像驱动方面的文章。2. 恰当的根据放大区域和放大倍数,设置一下世界变换就可以了。
ps.
镜像驱动只在2000以上的系统中才支持,如果你把它装在98或者NT上,还能这么快的话,那才真有两下子。
pps. 采用镜像驱动完全是为了简单和方便。当然,借助于驱动级的介入,效率肯定比较高点。 至于 文字 的 矢量缩放嘛, 呵呵,那纯属TTF字体所产生的副作用而已。跟它本身一点关系都没有。 不信你文字输出用 .fon 字体而不是 TrueType字体 看看。
也许这位弟兄的说法是正确的。以前没有做过mirror driver方面,刚才在网上查了一下资料,觉得如果要实现这种功能,mirror driver确实是一种好的方法。
不知道whoo是否可以介绍一些这方面的开发资料或者网站?
关于进一步讨论,请移步到:
http://topic.csdn.net/u/20081014/13/3feea5b3-25b2-4050-bbf8-e6a5712403f5.html