我在CScrollView中用GDI绘制了一些图形和文本。我需要实现缩放功能。我只需要变焦出功能,不需要变焦在比通常呈现更多。如何在GDI绘制的MFC中实现缩放CScrollView
这里是我最好的想法:
使用MM_ANISOTROPIC映射模式,SetWindowExt/SetViewPortExt函数......这种方式的问题在于,它不适合文本。有没有办法强制MFC扩展文本?我只能想到的是根据所选的缩放值设置文本字体大小,但我不确定这是否会看起来很好...毕竟...
绘制到内存DC,并使用StretchBlt blit到适当大小的客户区(使用SetScrollSizes设置...)。这将解决文本缩放问题。
此外,期望在该过程中具有抗混叠效果。我认为上述两种方法本身都应该完成这一点,但我不知道哪一个看起来会更好。此外,我将不得不稍后实施打印/打印预览功能(使用来自doc/view架构的MFC标准实现),所以我需要该方法与此兼容。
需要你的建议。走哪条路以及为什么。也许其他选项也存在?..
谢谢你的答复,杰里。不幸的是,你提到的方法有两个问题:它不缩放文本(使用DrawText API绘制),并且没有抗锯齿效果(可能是因为它执行坐标和大小的逻辑转换,但是例如LineTo函数仍然绘制锯齿线)。所以这给我留下了第二种方法,我上面描述了(绘制到mem dc然后StretchBlt) - 你怎么看待它?你能推荐它吗?.. – 2012-01-08 23:50:45