在 .NET 中,您通常使用 Bitmap 类来存储图像。要快速访问它,您需要调用lock() 和 unlock()将位图的内容复制到内存中。那么,这是否意味着位图在锁定之前没有存储在打包的内存数组中?
究竟需要锁定什么?即为什么平台不能简单地返回指向位图第一个像素的指针,让您直接访问像素?(除了“不安全”的内存访问注意事项)
一些可能的原因:
- 位图以原始压缩形式存储以节省内存(PNG、JPEG 等)
- 位图以 24-bpp 格式存储,因此访问速度比 32-bpp 图像慢
- 位图未存储在打包内存数组中,并且是碎片化的,因此无法快速读取/写入
- 位图以未公开的方式存储,平台不希望您访问实际的位图数据内存 - 迫使您使用 lock() 在内存中创建它的副本