WriteableBitmap をクリアするには?
#wpdev_jp
初中級心者問題というかネタ
WriteableBitmap には Pixel データが int Array の Pixels プロパティに格納されています。では、 このデータをクリアするにはどの方法がいいでしょう?
bmp = new WriteableBitmap(2560, 2560);
さて、パターン1:こちらを30回繰り返してみたところ、2.1秒かかりました。
for (int i = 0; i < bmp.Pixels.Length; i++)
bmp.Pixels[i] = 0;
そして、パターン2:これも同じように30回では 0.17秒で完了
Array.Copy(bclear.Pixels, 0, bmp.Pixels, 0, bmp.Pixels.Length);
さらに、パターン3:こちらは30回でも0.06秒でした。
Array.Clear(bmp.Pixels, 0, bmp.Pixels.Length);
まぁ、予想通り。つまり、WriteableBitmap としてみるよりも、Array をうまく使うこと、そして1つ1つ入れていくよりも、機械的に移すことのほうが早いことがポイントです。おそらくマルチスレッド処理ができるせい。さらに、Array.Clear なら機械的に埋めるだけなのでかなり早くできるということです。
小さいことですが、こういう積み上げがアプリケーションのレスポンスにつながるんですよね。