我正在用ID2D1HwndRenderTarget
渲染文本。
当UI窗口大小发生变化时,我想阻止正在渲染的文本的延伸 - 所以在我直接制作渲染命令之前它将保持不变。
在Direct2D documentation上描述了这种行为:
如果EndDraw显示缓冲区,则会拉伸此位图以覆盖显示它的表面:窗口的整个客户区域
我知道ID2D1HwndRenderTarget::Resize方法,但我不想立即更新大小,稍后根据我的程序需要使用它。
如何忽略Windows事件以防止这种视觉延伸?
您已经忽略了大小更改消息,这就是为什么表面大小与呈现时的客户区大小不匹配的原因。您可以尝试通过在执行EndDraw()之前根据“客户端区域/当前目标大小”因子设置目标分辨率来抵消此效果。我不知道这是否有用,或者当前目标矩形之外的未覆盖窗口区域会发生什么。