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

如何在GDK中以像素而非毫米为单位获取屏幕尺寸?

获取GdkMonitor像素尺寸的正确方式

你其实没漏掉文档的核心要点,只是没注意到GdkMonitor提供了直接获取像素尺寸的方法——gdk_monitor_get_geometry()。这个函数会返回一个GdkRectangle结构体,里面的width和height就是当前显示器的像素宽高。

修正后的代码示例

GdkDisplay *display = gdk_display_get_default();
GdkWindow *root_window = gdk_get_default_root_window();
GdkMonitor *monitor = gdk_display_get_monitor_at_window(display, root_window);

if (monitor != NULL) {
    GdkRectangle geometry;
    gdk_monitor_get_geometry(monitor, &geometry);
    // geometry.width 和 geometry.height 即为像素单位的屏幕尺寸
    g_print("屏幕像素宽度: %d, 高度: %d\n", geometry.width, geometry.height);
}

关于毫米转像素的补充(若确有需求)

如果某些场景下必须从毫米单位转换为像素,你可以结合显示器的像素尺寸与物理尺寸计算换算比例:

// 假设已获取到monitor和geometry结构体
gint width_mm = gdk_monitor_get_width_mm(monitor);
gint height_mm = gdk_monitor_get_height_mm(monitor);

// 计算每毫米对应的像素数
double px_per_mm_width = (double)geometry.width / width_mm;
double px_per_mm_height = (double)geometry.height / height_mm;

// 示例:将50毫米转换为像素
gint converted_px_width = (gint)(50 * px_per_mm_width);
gint converted_px_height = (gint)(50 * px_per_mm_height);

不过更推荐直接使用gdk_monitor_get_geometry()获取像素尺寸,这是GDK 3.22+官方推荐的「每显示器信息」获取方式,比单位转换更准确高效。

内容的提问来源于stack exchange,提问作者Ueda Takeyuki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:42:42