gpt4 book ai didi

c++ - GDI绘制的MFC的CScrollView如何实现缩放

转载 作者:行者123 更新时间:2023-11-28 08:12:07 26 4
gpt4 key购买 nike

我在 CScrollView 中使用 GDI 绘制一些图形和文本。我需要实现缩放功能。我只需要缩小缩小功能,不需要比正常呈现的放大放大

这是我最好的想法:

  1. 将 MM_ANISOTROPIC 映射模式与 SetWindowExt/SetViewportExt 结合使用... 这种方法的问题在于它不会缩放文本。有没有办法强制 MFC 也缩放文本?我唯一能想到的就是根据选择的缩放值设置文本字体大小,但我不确定这样到底会不会好看...

  2. 绘制到内存 DC,并使用 StretchBlt blit 到适当大小的客户区(使用 SetScrollSizes 设置...)。这将解决文本缩放问题。

同时希望在此过程中具有抗锯齿效果。我认为上述两种方法本身都可以实现这一点,但我不知道哪种看起来更好。此外,稍后我将不得不实现打印/打印预览功能(使用来自 doc/view 体系结构的 MFC 标准实现),因此我需要该方法与之兼容。

需要您的建议。走哪条路,为什么。也许还有其他选择?..

最佳答案

当您使用 MFC 时,您真的不想弄乱映射模式——MFC 本身已经将其用于(至少)打印预览功能。

我会看看 SetWorldTransform会为你工作。至少对于 vector/TrueType 字体,它会将文本与其他所有内容一起缩放。请注意,在 SetWorldTransform 起作用之前,您需要调用 SetGraphicsMode使用 GM_ADVANCED

关于c++ - GDI绘制的MFC的CScrollView如何实现缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com