Articles of xlib

cv2.imshow()在不同的屏幕上

在使用OpenCV的Python脚本中,我想在不同的屏幕/显示器上打开命名窗口。 我在Linux上,X被设置,使我有两个显示器。 我可以通过将环境variablesDISPLAY分别设置为:0.0或:0.1来控制默认打开的窗口。 然而,我想要做的是打开一个命名窗口:0.0和一个:0.1并能够不断更新每一个。 我find了Xlib ,它让我查询例如哪一个是默认屏幕,但我不能改变它。 此外,我可以更新环境variables做类似os.environ['DISPLAY'] = ':0.0' ,但是,毫不奇怪,这对后来打开的窗口没有任何影响。

触发X窗口的resize事件

所以我有一个X窗口(属于另一个进程),我想为该窗口触发一个resize事件,最好不实际调整它的大小。 我的第一个办法是重新调整窗口两次,第二次回到原来的大小,但我失败了。 问题是,有问题的窗口显示全屏,显然调用XResizeWindow或XMoveResizeWindow这些什么都不做(这是有道理的某种方式)。 如果窗口不处于全屏模式,它工作正常。 由于这只是为了快速testing反正我开始想知道是否有可能在X服务器中伪造/注入该窗口的resize事件。 对于MS Windows来说,看起来很容易,但是在Google上search的时候发现了很多例子,但是对于X来说,我似乎运气不好。 背景(因为人们可能会问无论如何;)):我正在全屏启动一个VMware Player实例,并在某些情况下启动后,Windows客人不会根据主机更改它的分辨率(但主要是,谢谢到客户机上安装的VMware Tools)。 虚拟机在连接不同大小屏幕的多台机器上使用,因此我无法预先configuration图像以获得正确的分辨率。 目前用户被告知退出并重新进入全屏,如果分辨率是错误的,但这是相当不方便的。 所以我的想法是简单地告诉VMplayer它在启动后只是resize,但也许有更好的方法…

如何用XLib创build一个映射但不可见的窗口?

我正在一个游戏项目中使用基于Linux的I / Ovalidation工具。 它是用C ++编写的,由于使用了与我们的游戏相同的I / O模块,它基于OIS 1.2。 因此,尽pipe我只需要在控制台上打印用户的input,但我仍然需要为OIS创build一个窗口。 所以这里来了我的问题:我怎样才能创build一个映射窗口,而它仍然是不可见的,并处理键盘事件? 我无法取消映射窗口,因为它不会再处理任何键盘事件。 我也找不到显示/隐藏窗口的function(也许我通过错误的方向search…) 我的小工具现在工作正常,除了有一个愚蠢的顶级空窗口,需要专注于处理键盘事件… 任何build议是受欢迎的。 谢谢!!!

如何将XImage保存为位图?

我试图创build将捕获桌面video(帧)的JNI C ++库。 第一步是简单地做一个桌面的屏幕截图。 代码是: #include <iostream> #include <X11/Xlib.h> using namespace std; int main() { Display *display; int screen; Window root; display = XOpenDisplay(0); screen = DefaultScreen(display); root = RootWindow(display, screen); XImage *img = XGetImage(display,root,0,0,400,400,XAllPlanes(),ZPixmap); if (img != NULL) { //save image here } return 0; } 但是,如何将img保存为位图文件? 由于目标库是JNI – 它不能使用第三方库。 (据我所知)。 请帮忙。 谢谢。

在应用程序开始时阻塞XNextEvent

我有以下应用程序。 #include <FWWindow.h> #include <FWApplication.h> int main(int /*argc*/, char */*argv*/[]) { FWApplication::Initialize(); FWWindow *win = new FWWindow(800, 600); win->Show(); FWApplication::Run(); delete win; } 当我运行它时,它会卡住XNextEvent()因为它阻塞,直到从XServer获得下一个事件。 我想知道的是,基于下面的代码,为什么XNextEvent在调用XMapWindow()之后没有得到ConfigureNotify或Expose事件; 我已经检查过,以确保我的应用程序根据我的IDE的监视窗口中的地址提供正确的Display 。 我错过了什么让窗口出现? Initialize() does the following – FWApplication *FWApplication::Initialize() { if (!_instance) { _xDisplay = XOpenDisplay(NULL); if (_xDisplay == NULL) throw "Failed to get XDisplay"; _initialized = true; _instance […]

如何避免在使用X11的graphics绘图中闪烁

我们正在一个窗口中绘制graphics。 我们正在更新每50ms的曲线,从硬件接收的值就像传感器一样。 我们需要以graphics格式显示这些值。 所以我们每50ms更新一次图表。 这给闪烁的问题。 我们在X11中编写代码。 有没有办法避免在X11graphics绘制闪烁。 提前致谢。

如何使用x11窗口背景加载bmp文件

我尝试使用bmp文件在x11窗口中设置背景图像。 我有使用XReadBitmapFile但它不工作。 我如何使用bmp文件来设置x11窗口背景。 提前致谢

linux的c + + xlib,处理器去快?

这里的东西听起来像对我来说很棘手,实际上我使用Xlib绘制一些窗口。 一个是在图像中绘制一些2D结果,所以只有在所有的微积分完成后才绘制这个结果。 另外一个就是一个简单的窗口,这个窗口就是“正在进行的微积分”。 所以现在在我开始微积分之前,我在过程中叫“显示简单的窗口”微积分, 然后我称之为计算的函数并绘制结果, 那么我在过程中叫“不要给我看简单的窗口”微积分“”。 但问题是,在演算过程中,我看不到“正在显示简单的窗口”的演算过程,我只是一眼就看出来,只是在显示计算结果的图像时就消失了。 我尝试了一些sleep()但是这并不能解决问题。 什么样的东西可以导致这样的问题? 在我的C ++课程中,我已经遇到过这样的问题,那时候我在console上工作,我从来没有find这个问题的原因。 有人能给我一些解释和提示,帮助我像老板一样对付它吗? 这里是我的代码片: switch(e.type/*xlibevent*/){ . . . case KeyRelease : switch(keyRelease()){ // keyRelease just recognize wich key was released . . . // w3w1 = window "calculus in process" case 3 : w3w1.switcher(); doCalculus(&w1); w3w1.switcher(); break; . . . . . . } 我只是做了一个testing,我把doCalculus(&w1)换成了sleep(3)同样的结果,我没有看到我的窗口“进程中的微积分” 有switcher() […]

X11透明窗口:仅在alpha = 0处点击

我可以使用alpha窗口来点击窗口的100%透明部分吗? 我正在寻找一个不基于形状扩展的通用解决scheme。 在Windows中,这是通过设置WS_EX_TRANSPARENT完成的。 在OSX中,这是通过设置setIgnoresMouseEvents(true)来完成的。 在X11这是由…完成?

(xlib)为windowmanagers创build我自己的属性

我可以创build自己的属性: XChangeProperty(display, w, property, type, format, mode, data, nelements) 或者我可以只使用standards.freedesktop.org中显示的属性?