Question

Bonjour

Je suis en train d'utiliser WritableBitmap.BackBuffer tel qu'il est utilisé dans cette réponse sur le SO. Microsoft.FSharp.NativeInterop.NativePtr.write semble être une bonne fonction à utiliser pour écrire.

Après avoir essayé et la lecture d'un bit deux se pose des questions.

  1. WritableBitmap.BackBuffer a le type nativeint, comment convertir en nativeptr que NativePter.write veut?

  2. Il semble que je ne peux écrire un int à un moment, mais je veux écrire un int [] entier.

Je reconnais que je suis en eau profonde, mais il est dans l'eau profonde que vous apprenez à nager :)

Merci à l'avance Gorgen

Était-ce utile?

La solution

Je pense que la fonction NativePtr.write peut être utilisé que pour écrire la valeur unique à la fois, donc si vous voulez copier un tableau, vous devrez utiliser une boucle de for.

Une option plus facile peut être d'utiliser la méthode de Marshal.Copy ( voir MSDN ) qui prend un réseau de source (il y a des surcharges pour des tableaux contenant des éléments de divers types) et intptr comme destination.

Quelque chose comme cela devrait fonctionner:

let imageData = [| ... |] // generate one dimensional array with image data
writeableBitmap.Lock()

let buffer = writeableBitmap.BackBuffer
Marshal.Copy(imageData, 0, buffer, imageData.Length)

Autres conseils

Je pense que l'approche proposée par Tomas est logique. Cependant, pour répondre à votre première question, vous pouvez convertir un nativeint à un nativeptr en utilisant la fonction NativeInterop.NativePtr.ofNativeInt.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top