使用F#中的本机指针和可写位图
你好 我正在尝试使用中使用的使用F#中的本机指针和可写位图,f#,native-code,F#,Native Code,你好 我正在尝试使用中使用的writeablebitmap.BackBuffer,请参阅部分示例。 我真正想做的是将int[]写入nativeint指向的空间 为了能够从int[]写入一些内存,我从一开始就这么做了。 似乎是一个很好的函数用来写 在尝试并阅读了一点之后,出现了两个问题 writeablebitmap.BackBuffer具有nativeint类型,如何转换为NativePter.write想要的nativeptr 似乎我一次只能写一个int,但我想写一个完整的int[] 我承认我
writeablebitmap.BackBuffer
,请参阅部分示例。我真正想做的是将
int[]
写入nativeint
指向的空间
为了能够从int[]写入一些内存,我从一开始就这么做了。
似乎是一个很好的函数用来写
在尝试并阅读了一点之后,出现了两个问题
writeablebitmap.BackBuffer
具有nativeint类型,如何转换为NativePter.write
想要的nativeptrint
,但我想写一个完整的int[]
Gorgen我认为
NativePtr.write
函数一次只能用于写入单个值,因此如果要复制数组,必须使用for
循环
一个更简单的选择可能是使用Marshal.Copy
方法(),该方法将源数组(包含各种类型元素的数组有重载)和intptr
作为目标
像这样的方法应该会奏效:
let imageData = [| ... |] // generate one dimensional array with image data
writeableBitmap.Lock()
let buffer = writeableBitmap.BackBuffer
Marshal.Copy(imageData, 0, buffer, imageData.Length)
我认为托马斯建议的方法是有道理的。但是,要回答第一个问题,您可以使用nativeint的
NativeInterop.nativeptr.
功能将nativeint
转换为nativeptr