You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SDL自动放大图像,如何避免受Windows系统150%显示缩放影响?

解决SDL跟随Windows系统缩放放大画面的问题

要让SDL忽略Windows系统的显示缩放,按实际像素渲染60×60的图片,可通过以下步骤实现:

  • 设置DPI感知提示:在初始化SDL或创建窗口前,添加以下代码,让SDL启用每显示器DPI感知模式,避免系统自动缩放窗口:

    SDL_SetHint(SDL_HINT_WINDOWS_DPI_AWARENESS, "per-monitor-v2");
    

    该模式下,SDL会根据当前显示器的DPI调整窗口渲染逻辑,确保窗口的逻辑尺寸与实际像素尺寸一致,系统不会对整个窗口进行缩放。

  • 验证渲染尺寸:创建窗口和渲染器后,可通过SDL_GetWindowSize获取窗口的逻辑尺寸,通过SDL_GetRendererOutputSize获取实际渲染的像素尺寸。若DPI感知设置正确,两者数值应匹配(比如设置窗口尺寸为60×60时,实际渲染尺寸也为60×60)。

  • 按原始尺寸渲染:渲染图片时,直接使用原始60×60的SDL_Rect参数调用SDL_RenderCopy,无需额外缩放,即可让图片按实际像素显示。

如果你的SDL版本低于2.0.10(不支持per-monitor-v2),也可以尝试设置为不感知DPI模式(但可能导致高DPI下文字模糊):

SDL_SetHint(SDL_HINT_WINDOWS_DPI_AWARENESS, "unaware");

内容的提问来源于stack exchange,提问作者Max Legato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:28:13