0

私も書いているC++ライブラリを使用するCocoaアプリケーションを書いています。Cocoa アプリケーションで C++ ライブラリが draw メソッドを呼び出せるようにしたいです。

詳細- コンテキストに入れると、私は OpenNi 骨格追跡を実行し、骨格データを記録しています。新しいフレームごとに、データを画面に描画できる/描画する必要があることを Objective-C コードに伝えたいと思います。

OpenNI トラッキング コードは、コントロール オブジェクト SkeletalModuleControl によって呼び出されます (そしてそのハンドルを持っています)。Objective-C コードが対話する唯一のオブジェクトは、このコントロール クラスです。私の考えでは、コントロール クラスに callDraw メソッドと registerDraw メソッドを作成するのが最善であると考えています。Objective-C コードはその描画メソッド (または複数の描画メソッド?) を登録し、callDraw は登録された描画メソッド (存在する場合) を呼び出します。

4

1 に答える 1

0

一般に、Cocoa ビューへの描画は、Cocoa がビューの-drawRect:メソッドを呼び出したときにのみ行う必要があります。したがって、実際に検討する必要があるのは、表示したいデータを更新したときに Cocoa にビューを無効にする方法です...

C++ コードから呼び出すことができる昔ながらの C 関数を作成するのが、おそらく最も簡単な方法です。C++ ライブラリを使用すると、コールバック関数を登録して関連するビューを無効にすることも簡単です。どちらの場合も、関数はビューを無効-setNeedsDisplay:にすることのみを担当する必要があることに注意してください (たとえば、またはを呼び出します-setNeedsDisplayInRect:)。実際の描画は、後で Cocoa が-drawRect:メソッドを呼び出したときに行う必要があります。

描画を行うコードを C++ ライブラリに入れたい場合は、 から呼び出すことができる単純な古い C 関数としてラップするだけ-drawRect:です。

于 2012-07-27T18:18:22.050 に答える