gc *_*c . 10 c++ linux screen-resolution
我试图在Linux系统上获得屏幕的分辨率以及特定窗口(程序正在运行的程序)的分辨率.我不需要修改分辨率,我只需要当前的值.据我所知,我们可以在Windows上调用一些系统函数,我们怎样才能在Linux上执行,最好是使用C/C++语言?提前致谢.
更新:实际上,我不需要做GUI,虽然我知道Qt和GTK +可以做到,但我不愿意包含一个外部库来获得分辨率.
小智 9
要获得屏幕分辨率,您可以使用XRandR扩展,就像在xrandr源中一样:
SizeID current_size;
XRRScreenSize *sizes;
dpy = XOpenDisplay (display_name);
// ...
root = RootWindow (dpy, screen);
sc = XRRGetScreenInfo (dpy, root);
current_size = XRRConfigCurrentConfiguration (sc, ¤t_rotation);
sizes = XRRConfigSizes(sc, &nsize);
for (i = 0; i < nsize; i++) {
printf ("%c%-2d %5d x %-5d (%4dmm x%4dmm )",
i == current_size ? '*' : ' ',
i, sizes[i].width, sizes[i].height,
sizes[i].mwidth, sizes[i].mheight);
// ...
}
Run Code Online (Sandbox Code Playgroud)
您可以在xterm中看到输出"xrandr".
或者,更好的是,使用xdpyinfo方法:
Display *dpy;
// dpy = ...
int scr = /* ... */
printf (" dimensions: %dx%d pixels (%dx%d millimeters)\n",
DisplayWidth (dpy, scr), DisplayHeight (dpy, scr),
DisplayWidthMM(dpy, scr), DisplayHeightMM (dpy, scr));
Run Code Online (Sandbox Code Playgroud)
在X11中,您需要调用Xlib的XGetWindowAttributes来获取各种窗口信息,包括相对于父级的大小和位置.有关如何使用它的示例,您可以谷歌搜索'xwininfo.c'.
也就是说,可能你会使用一些更高级别的框架来进行窗口编程 - 而且它已经有了一些其他原语的可能性很高,请参阅Qt的一个例子- 所以你可能想要提供更多的背景知识关于这个问题.
要看:
QApplication::desktop()->screenGeometry()(见http://doc.qt.digia.com/4.0/qdesktopwidget.html)
归档时间: |
|
查看次数: |
8630 次 |
最近记录: |