特别是:元帅更安全吗?指针更快吗?
int pixel = Marshal.ReadInt32(bitmapData.Scan0, x * 4 + y * bitmapData.Stride);
int pixel = ((int*)bitmapData.Scan0)[x + y * bitmapData.Stride / 4];
答案 0 :(得分:1)
没有区别。如果你看一下Marshal.ReadInt32
中的代码,你会看到它使用指针来执行相同的操作。
Marshal
唯一的“好处”是您不必明确允许不安全的代码。 IIRC,您还需要FullTrust来运行不安全的代码,因此这可能是一个考虑因素。
答案 1 :(得分:0)
我个人更喜欢使用Marshal
,因为我避免使用不安全的代码。至于哪个更快,我不确定,但我确信逐像素操作可能会慢,但你这样做。更好的方法是将整个扫描线读入C#数组并进行处理。