0

我正在编写一个使用我也在编写的 C++ 库的 Cocoa 应用程序。我希望 C++ 库能够在 Cocoa 应用程序中调用 draw 方法。

细节——具体来说,我正在运行 OpenNi 骨骼跟踪并记录骨骼数据。在每个新帧,我想告诉 Objective-C 代码它可以/应该将数据绘制到屏幕上。

OpenNI 跟踪代码由控制对象 SkeletalModuleControl 调用(并具有句柄)。Objective-C 代码与之交互的唯一对象是这个控件类。我的想法是最好在控件类中创建 callDraw 和 registerDraw 方法。Objective-C 代码会注册它的 draw 方法(或多个 draw 方法?)并且 callDraw 会调用注册的 draw 方法(如果有的话)。

4

1 回答 1

0

一般来说,只有在 Cocoa 调用视图的-drawRect:方法时才能绘制到 Cocoa 视图中。因此,您真正需要考虑的问题是,当您更新了要显示的数据时,如何让 Cocoa 使您的视图无效......

编写一个可以从 C++ 代码调用的普通 C 函数可能是最简单的方法。让 C++ 库让您注册一个回调函数以使相关视图无效也很简单。请记住,无论哪种方式,该函数都应该只负责使视图无效(例如调用-setNeedsDisplay:-setNeedsDisplayInRect:)。实际的绘制需要稍后发生,当 Cocoa 开始调用-drawRect:方法时。

如果您想将代码放入 C++ 库中进行绘图,只需将其包装为可以从-drawRect:.

于 2012-07-27T18:18:22.050 回答