2009-02-20 8 views
1

Je travaille sur un projet dans lequel je vais créer une interface utilisateur dans une application C# windows. Il doit afficher une image. Et je veux transférer les données d'image à un module C++ qui l'éditera et retournera le résultat.Transfert de données d'image entre C# et C++

J'ai déjà établi comment transférer des données entre C# et C++ (j'utilise une DLL C++). Ma question est: quelle classe en C# peut faire ce que je veux? J'en ai besoin pour exporter les données d'image dans une sorte de matrice de pixels (de préférence avec des valeurs RVB séparées, chacune de taille 1 octet = 3 octets par pixel) avec lesquelles je peux travailler dans le module C++. En outre, il doit pouvoir importer le résultat dans l'objet et l'afficher dans la fenêtre de l'application C# windows.

Des idées quelle classe pourrait fonctionner le mieux pour moi?

Merci, Malki.

Répondre

3

Si vous voulez travailler avec des données de pixel comme vous le décrivez, alors Bitmap.LockBits est la méthode qui vous convient.

0

À quoi s'attend la méthode de votre DLL en tant que paramètre (s) d'entrée?

EDIT: Pour autant que je sache, en C# vous devez passer en "mode non sécurisé" pour travailler directement avec les pixels (et rapidement :)). Quelque chose comme this.

0

En plus de la réponse de danbystrom à propos de Bitmap.LockBits, vous voudrez regarder la classe Marshal pour copier des données binaires. Vérifiez la méthode Marshal.Copy pour un exemple.

0

En vous répondant à tous! :-)

Non, vous n'avez pas besoin de marshaling et vous n'avez pas besoin de code non sécurisé si vous voulez juste passer les pixels au C++ natif.

Vous pouvez vérifier ce poste ont été je exactement cela, appeler une fonction C++ contenant le langage assembleur fabriqués à la main pour faire un peu de traitement d'image:

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

Questions connexes