1

私は、C#Windowsアプリケーションでユーザーインターフェイスを作成するプロジェクトに取り組んでいます。画像を表示する必要があります。そして、画像データを編集して結果を返すC++モジュールに転送したいと思います。

C#とC ++の間でデータを転送する方法はすでに確立しています(C ++ DLLを使用しています)。私の質問は、C#のどのクラスが私が望むことを実行できるかということです。C ++モジュールで使用できるある種のピクセルマトリックス(できれば、それぞれサイズが1バイト=ピクセルあたり3バイトのRGB値が分離されている)に画像データをエクスポートするために必要です。また、結果をオブジェクトにインポートして戻し、C#Windowsアプリケーションウィンドウに表示できる必要があります。

どのクラスが私に最適であるかについてのアイデアはありますか?

ありがとう、マルキ。

4

4 に答える 4

3

説明したとおりにピクセルデータを操作する場合は、Bitmap.LockBitsが最適なメソッドです。

于 2009-02-20T13:04:46.927 に答える
0

あなたのdllのメソッドは入力パラメータとして何を期待していますか?

編集:私が知る限り、c#では、ピクセルを直接(そして高速に:))操作するために「安全でないモード」に入る必要があります。このようなもの。

于 2009-02-20T13:06:57.403 に答える
0

Bitmap.LockBits に関する danbystrom の回答に加えて、バイナリ データをコピーするための Marshal クラスを確認する必要があります。例については、Marshal.Copy メソッドを確認してください。

于 2009-02-20T13:10:48.797 に答える
0

皆様にお答えします!:-)

いいえ、ネイティブ C++ にピクセルを渡したいだけであれば、マーシャリングやアンセーフ コードは必要ありません。

画像処理を行うために手作りのアセンブリ言語を含む C++ 関数を呼び出して、まさにこれを行った場合、この投稿を確認できます。

http://danbystrom.se/2008/12/22/optimizing-away-ii/

于 2009-02-20T14:04:33.757 に答える