【问题标题】:Using views from other apps as CoreAnimation Layer使用来自其他应用程序的视图作为 CoreAnimation 层
【发布时间】:2009-12-31 16:44:36
【问题描述】:

全部,

如何在我的 CA 应用程序中使用来自其他应用程序的 (NS) 视图作为层。 IE。我想在我的 CA 应用中将 Keynote 演示文稿显示为图层。

我发现 iChatTheatre API 看起来很有希望 - 但是我需要相反的。从应用程序获取内容的 API - 不提供它。

任何指针?

谢谢。

【问题讨论】:

    标签: cocoa core-animation


    【解决方案1】:

    查看"Son of Grab" 示例。
    它向您展示了如何使用随 Mac OS X 10.5 引入的 CGWindow*() API
    API 允许您获取整个窗口的内容,因此您必须找到一种方法来获取您感兴趣的窗口部分。

    【讨论】:

    • 代码看起来不错。目前,照顾窗户的各个部分不是问题。我目前对主题演讲全屏内容感兴趣。这似乎也足以应付非静态内容。
    【解决方案2】:

    我不相信有一种公开的方式来做你所说的事情。您最好的方法可能是对 iChat AV 系统(接收方)进行逆向工程,看看是否可以复制它。 ICP project 已经完成了一些初步工作。这很粗略,但这是一个开始。

    另一种方法是 QuickLook API,它的优点是不必运行源应用程序。到目前为止,Apple 也没有提供该 API 的读取功能。 Ciarán Walsh 几年前在 QL 上做了一些handy reverse engineering,我也使用过这种方法,但它有点笨拙。您可以像 Ciarán 解释的那样生成面板,但将其置于屏幕之外。然后,您可以使用NSBitmapImageRep -initWithFocusedViewRect: 将内容复制到 NSImage 中。不幸的是,您可能会在其中遇到一些时髦的视觉伪影(例如在某些情况下的滚动条),但对于某些应用程序来说,它可能是有效的。

    【讨论】:

    • QL 的东西看起来很有前途。谢谢。到目前为止,我一直在使用 NSView -dataWithPDFInsideRect: 来获得一些可扩展的表示......但你也做了一些视觉“功能”。我仍然想知道如何处理非静态内容......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多