Ubuntu 18.04 LTS 获取屏幕放大比例

软件和网站开发以及相关技术探讨
回复
linany1990
帖子: 3
注册时间: 2018-09-20 14:48
系统: Windows

Ubuntu 18.04 LTS 获取屏幕放大比例

#1

帖子 linany1990 » 2018-09-20 14:59

近来在使用SDL库开发Ubuntu支持高分屏的程序,需要获取当前屏幕显示放大比例系数(screen display scale),查了很多资料都找不到,希望知道的大神告知一下,通过什么命令可以获取这个值,或者这个比例系数才在哪个文件,万分感谢。
头像
astolia
论坛版主
帖子: 6396
注册时间: 2008-09-18 13:11

Re: Ubuntu 18.04 LTS 获取屏幕放大比例

#2

帖子 astolia » 2018-09-20 17:09

给你移动了下帖子版面

SDL_CreateWindow创建窗口时设置SDL_WINDOW_ALLOW_HIGHDPI标识不知道支持linux没有 https://wiki.libsdl.org/SDL_CreateWindow
或者你用SDL_GetDisplayDPI获取当前DPI,和非高分屏时的DPI比较一下,也能算出大致的放大倍数,效果也不差。
否则获取各个桌面环境/图形库缩放比例的方法不同,程序的可移植性就会很差
linany1990
帖子: 3
注册时间: 2018-09-20 14:48
系统: Windows

Re: Ubuntu 18.04 LTS 获取屏幕放大比例

#3

帖子 linany1990 » 2018-09-20 17:29

astolia 写了: 2018-09-20 17:09 给你移动了下帖子版面

SDL_CreateWindow创建窗口时设置SDL_WINDOW_ALLOW_HIGHDPI标识不知道支持linux没有 https://wiki.libsdl.org/SDL_CreateWindow
或者你用SDL_GetDisplayDPI获取当前DPI,和非高分屏时的DPI比较一下,也能算出大致的放大倍数,效果也不差。
否则获取各个桌面环境/图形库缩放比例的方法不同,程序的可移植性就会很差
已经设置了SDL_WINDOW_ALLOW_HIGHDPI标志,然而拿到的dpi的值跟普通屏幕的是一样的,我通过命令xdpyinfo | grep resolution 对比了一下高分屏和普通屏幕的dpi值一样的,如果要程序要适配高分屏,必须要拿到显示放大比例才可以。
linany1990
帖子: 3
注册时间: 2018-09-20 14:48
系统: Windows

Re: Ubuntu 18.04 LTS 获取屏幕放大比例

#4

帖子 linany1990 » 2018-10-31 15:40

使用gtk库中的接口获取,具体代码如下:
#include <gtk/gtk.h>
float X11_GetWindowDpiRatio(void)
{
float dpi_ratio = 1.0f;
GdkScreen *screen;
gtk_init(NULL, NULL);
screen = gdk_screen_get_default();
dpi_ratio = gdk_screen_get_monitor_scale_factor(screen, 0);
return dpi_ratio;
}
回复