Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++11 Xlib XDefineCursor闪烁_C++11_Cursor_Cairo_Xlib_Mouse Pointer - Fatal编程技术网

C++11 Xlib XDefineCursor闪烁

C++11 Xlib XDefineCursor闪烁,c++11,cursor,cairo,xlib,mouse-pointer,C++11,Cursor,Cairo,Xlib,Mouse Pointer,在Xlib中,我使用XDefineCursor函数将鼠标指针更改为从XCreatePixmapCursor函数生成的各种光标。我发现光标确实按照预期发生了变化,但当它这样做时,在光标变化之间会出现奇怪的闪烁/闪烁,在光标重新出现在正确的位置之前,光标会快速而不规则地抖动到位。它发生得很快,但很明显。是否可以在光标更改之间进行平滑过渡?还是我做错了什么?谢谢 更新: 我认为在Pixmap光标定义期间使用的热点与此问题有关。我使用的每个光标都有自己独特的热点,这取决于光标的外观。我发现,当我简单地将

在Xlib中,我使用XDefineCursor函数将鼠标指针更改为从XCreatePixmapCursor函数生成的各种光标。我发现光标确实按照预期发生了变化,但当它这样做时,在光标变化之间会出现奇怪的闪烁/闪烁,在光标重新出现在正确的位置之前,光标会快速而不规则地抖动到位。它发生得很快,但很明显。是否可以在光标更改之间进行平滑过渡?还是我做错了什么?谢谢

更新:

我认为在Pixmap光标定义期间使用的热点与此问题有关。我使用的每个光标都有自己独特的热点,这取决于光标的外观。我发现,当我简单地将所有热点值设置为(0,0)时,闪烁就会消失。不幸的是,这意味着我有不正确的游标热点。例:

// before, causes flicker
cursor1_pointer = XCreatePixmapCursor(dpy, cursor1_source, cursor1_source,
  &foreground_color, &background_color, 16, 15);

// after, no flicker
cursor1_pointer = XCreatePixmapCursor(dpy, cursor1_source, cursor1_source,
  &foreground_color, &background_color, 0, 0);
我猜Xlib正在尝试在更改过程中根据光标的新热点重新定位光标。不幸的是,它似乎并没有以一种视觉上优雅的方式做到这一点。有什么想法吗

更新:

我想出了一个半笨重的技巧来防止这种闪烁。基本上,我编辑了所有光标图像文件,使其具有足够大且共享的画布大小,然后在此空间内重新定位每个光标图像,以便程序中使用的所有光标可以共享一个公共热点像素坐标(16,16)。这样,当Xlib更新光标时,它不必根据新的图像热点重新定位光标,从而实现半平滑的视觉过渡

这不是最优雅的解决方案,但它很有效