使用gtk3 api获取系统uscale因子



我正在开发一个使用gtk3进行窗口和事件处理的SDK。我正在尝试使用gtk3 api找到系统uscale。在HiDPI屏幕上,该比例可以大于1.0。gtk_window_get_scale_factor将返回正确的比例因子,但它总是返回1,即使我将比例设置为2.0。

我知道gtk有关于比例因子的知识,因为gtk本地应用程序得到适当的缩放。我已经运行了gtk3-demo,它可以根据系统的uscale进行适当的缩放。有人能帮我使用gtk3 api获得缩放因子吗?

PS:刻度是通过这些步骤设置的。转到"设置-显示-比例"制作2.0的比例。我正在fedora 32和Ubuntu 20.04上进行测试。

如果您正在寻找的是DPI比例(通常由GDK_DPI_SCALE环境变量设置),我会使用以下代码片段的变体:


static gdouble get_dpi_scale(GdkScreen *screen)
{
gdouble dpi = gdk_screen_get_resolution(screen);
GtkSettings *settings = gtk_settings_get_default();
gint xft_dpi = 0;
g_object_get(settings, "gtk-xft-dpi", &xft_dpi, NULL);
g_return_val_if_fail(xft_dpi > 0, 0);
return dpi / xft_dpi;
}

最新更新