Я думаю, что функцию NativePtr.write
можно использовать только для записи одного значения за раз, поэтому, если вы хотите скопировать массив, вам придется использовать цикл for
.
Более простым вариантом может быть использование метода Marshal.Copy
( см. MSDN ), который принимает исходный массив (существуют перегрузки для массивов, содержащих элементы различных типов) и intptr
в качестве места назначения.
Примерно так должно работать:
let imageData = [| ... |] // generate one dimensional array with image data
writeableBitmap.Lock()
let buffer = writeableBitmap.BackBuffer
Marshal.Copy(imageData, 0, buffer, imageData.Length)