我想要完成的是计算我的应用程序所使用的屏幕的dpi (或者在我的例子中是dpmm)。据我所知,现代的方法是调用gdk::Monitor::get_height_mm和gdk::Monitor::get_width_mm。
所以,从window: gtk::Window开始,我试着让监视器像这样:
let screen = window.get_display().and_then(|display| get_monitor_at_window(&window));但是,gtk::Window没有IsA<gdk::Window>实现:
8 | window.get_display().and_then(|display| display.get_monitor_at_window(&window));
| ^^^^^^^ the trait `glib::IsA<gdk::auto::window::Window>` is not implemented for `gtk::Window`
|
= help: the following implementations were found:
<gtk::Window as glib::IsA<glib::Object>>
<gtk::Window as glib::IsA<gtk::Bin>>
<gtk::Window as glib::IsA<gtk::Buildable>>
<gtk::Window as glib::IsA<gtk::Container>>
and 2 others那么,从gtk::Window到窗口所在屏幕的宽度和高度是多少呢?
发布于 2021-05-22 17:11:59
gtk::Window与gdk::Window不一样。前者更像是“窗口”的概念,而后者则更好地映射到X窗口的概念。在其他显示协议中,这些也被称为“表面”,这就是为什么在GTK 4中重命名它的原因,也是为了消除这种混乱。
无论如何,要在GTK中获取小部件的底层表面/窗口,可以在其上调用get_window()方法(在gtk-rs中,这是gtk::WidgetExt特性的一部分)。
https://stackoverflow.com/questions/67649865
复制相似问题