位图锁定位和克隆
熟悉GDI的人是否可以解释为什么以下序列会抛出?
var b = new Bitmap("some file"); var bd= b.LockBits(rect , readonly, px); //correct size and pixel type var clone = (Bitmap)b.Clone(); var cd = clone.LockBits(rect , readonly , px); //okay clone.UnlockBits(cd); //okay b.UnlockBits(bd); //throws -- why?
如果我在锁定第一个位图之前进行克隆,它就不会抛出,这是我期望的行为。
我还希望如果它可以让你克隆一个锁定的图像,然后允许你锁定/解锁克隆,原来不会受到影响。
我认为Bitmap.Clone()
不会生成深层副本并且数据是共享的。
编辑:按照下面给出的建议,在var b
之后移动克隆行并使其像这样: var clone = new Bitmap(b);
。 它现在有效。