是否可以在Mac OS X(Snow Leopard)上将CIBumpDistortion过滤器注入屏幕的特定区域?

时间:2010-10-10 03:21:48

标签: macos graphics core-graphics quartz-graphics quartz-2d

我想使用CIBumpDistortion暂时扭曲鼠标下的区域,以增加鼠标指针的可见性。

目前,我有一个透明背景NSWindow,它在指针下面浮动,显示一个十字线,当你移动鼠标时会消失,而当你停止时会消失。这样做没问题,但是Bump Distortion会使我的应用很棒而不是足够好

我尝试使用CGDisplayCaptureWithOptions(display, kCGCaptureNoFill),但这会降低抓取性能并使鼠标指针断断续续。

这是我正在努力实现的an image

注意,我想要扭曲的区域不在我自己的NSWindow内,所以我认为我不能只对CIImage应用转换并显示它(除非你们其中一个聪明大家告诉我你可以从屏幕的任意区域复制一个位图吗?)

提前致谢!

1 个答案:

答案 0 :(得分:4)

  

注意,我想扭曲的区域不在我自己的NSWindow中,所以我不认为我可以只将转换应用到CIImage并显示(除非你们中的一个聪明的人告诉我你可以复制一个来自屏幕任意区域的位图?)

可以!

获取您的窗口windowNumber,并使用CGWindowList创建其下所有内容的CGImage屏幕截图。然后,从CGImage创建一个CIImage,通过过滤器运行它,并将输出图像设置为窗口显示的内容。

只有当鼠标移动或屏幕在光标周围区域重绘时才能执行此操作(您可以为后者注册屏幕刷新回调),您可以非常有效地完成此操作。