屏幕缩放时的 CGDisplayHideCursor、CGDisplayShowCursor 和 CGWindowListCreateImage 问题
我正在开发一个桌面应用程序,在其中读取屏幕缓冲区数据并从中创建图像。我使用调用 glReadPixels 来读取屏幕数据。
如果我不想在从屏幕缓冲区创建的图像中显示光标,我可以在从屏幕缓冲区创建图像之前使用调用 CGDisplayHideCursor 隐藏光标。
如果我想在从屏幕缓冲区创建的图像中显示光标,我可以在从屏幕缓冲区创建图像之前使用调用 CGDisplayShowCursor。
这在正常情况下工作得很好。但是,如果我在屏幕缩放时尝试此操作:
- 即使我隐藏光标,光标也会显示在从屏幕创建的图像中。
- 即使我显示光标,从屏幕创建的图像中也会显示两个光标。
这里有什么问题呢?
I am developing a Desktop application in which I am reading the screen buffer data and create image out of it. I use the call glReadPixels to read the screen data.
If I do not want to show the cursor in the image created from screen buffer, I hide the cursor using the call CGDisplayHideCursor before creating the image from screen buffer.
If I want to show the cursor in the image created from screen buffer, I enable use the call CGDisplayShowCursor before creating the image from screen buffer.
This works fine in normal scenario. But, if I try this when the screen is zoomed:
- Cursor is shown in the image created from the screen even if I hide it.
- Two cursors are shown in the image created from the screen even if I show the cursor.
What is the problem here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我可以使用 CGCursorIsDrawnInFramebuffer 来解决它,它告诉光标是否包含在缓冲区中。
I could solve it using CGCursorIsDrawnInFramebuffer which tells if the cursor is included in the buffer or not.