0

我正在編寫一個Cocoa應用程序,它使用我也在編寫的C++庫。我希望C++庫能夠在Cocoa應用程序中調用繪圖方法。我應該使用函數指針嗎? C++和Objective-C

細節 - 把它放到上下文中,我運行OpenNi骨骼跟蹤和記錄骨骼數據。在每個新框架中,我想告訴Objective-C代碼它可以/應該繪製數據以進行屏幕顯示。

OpenNI跟蹤代碼由控制對象SkeletalModuleControl調用(並且具有句柄)。 Objective-C代碼與此交互的唯一對象是此控件類。 我的想法是,最好在控件類中創建callDraw和registerDraw方法。 Objective-C代碼將註冊其繪製方法(或多個繪製方法?),並且callDraw將調用已註冊的繪製方法(如果有的話)。

+0

你看過這個meta-templating嗎? – Caesar 2012-07-27 18:08:43

回答

0

一般而言,只有在Cocoa調用視圖的-drawRect:方法時才能繪製到Cocoa視圖。所以,你真正需要考慮的問題是如何讓Cocoa在你更新要顯示的數據時使你的視圖無效...

寫一個簡單的C函數,你可以從你的C++代碼可能是最簡單的方法。讓C++庫允許您註冊回調函數以使相關視圖失效也很簡單。請記住,無論哪種方式,該功能只應負責無效的意見(例如呼叫-setNeedsDisplay:-setNeedsDisplayInRect:)。實際的需要稍後發生,當可可開始調用-drawRect:方法。

如果要將代碼放入C++庫中進行繪製,只需將其作爲可從-drawRect:調用的普通C函數包裝即可。