var source = new Bitmap(2000,2000);
var sw = Stopwatch.StartNew();
for (int i = 0; i < 10000; i++)
{
//var copy = new Bitmap(source);
var copy = source.Clone() as Bitmap;
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
代码在我的系统中运行时间不到 10 毫秒,并且 Ram 使用情况保持不变。有了这个计时器和 Ram 使用结果,就不能有 Bitmapdata 的副本。
但是当我这样做时。
var copy2 = source.Clone() as Bitmap;
for (int x = 0; x < copy2.Width; x++)
{
for (int y = 0; y < copy2.Height; y++)
{
copy2.SetPixel(x, y, Color.Red);
}
}
// copy2 is Red
// source is NOT!!
这怎么可能?