1

如何在没有 unsafe 修饰符的情况下重写此代码?

var bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, bitmap.PixelFormat);
var size = Math.Abs(bmpData.Stride) * bitmap.Height;
var stream = new UnmanagedMemoryStream((byte*)bmpData.Scan0, size));
4

1 回答 1

2

要获得对位图数据的透明高效访问(比使用 LockBits 的任何复制技术更快),您可以使用以下不需要将代码标记为不安全的技术(但它确实需要 FullTrust):

重要提示:尽量避免长时间固定对象(阻碍 GC 效率),并且不要忘记在 finally 子句中处理位图和 GC 句柄!

如果您需要流,您当然也可以在此创建一个法线。MemoryStreambyte[]

于 2013-06-29T14:36:03.993 回答