当窗口大小改变时,如何防止direct2d“拉伸”视图?

时间:2019-02-20 12:12:05

标签: c++ mfc directx sharpdx direct2d

我正在使用ID2D1HwndRenderTarget渲染文本。

当UI窗口大小发生变化时,我想防止呈现文本的拉伸-因此在我直接执行渲染命令之前,它不会改变。

Direct2D documentation上描述了行为:

  

如果EndDraw提供了缓冲区,则此位图将拉伸以覆盖   呈现它的表面:窗口的整个客户区域

我知道ID2D1HwndRenderTarget::Resize方法,但是我不想立即更新大小,只是稍后根据程序需要使用它。

如何忽略Windows事件以防止这种视觉拉伸?

1 个答案:

答案 0 :(得分:0)

您已经忽略了尺寸更改消息,这就是为什么在呈现时表面尺寸与客户区域尺寸不匹配的原因。您可以在执行EndDraw()之前通过根据“客户区域/当前目标大小”因子设置目标分辨率来尝试抵消这种影响。我不知道这是否有帮助,或者对当前目标矩形外部的未覆盖窗口区域会发生什么。