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!!
これはどのように可能ですか?