私のコードのパフォーマンスにいくつかの問題があります... 私は多くの色の矩形をDrawingVisualにレンダリングする必要があります。多くの要素をDrawingVisualにレンダリングします
最初のバージョンは単純である:
using (DrawingContext dc = Canvas.RenderOpen())
{
for (Int32 x = 0; x < widthCount; x++)
for (Int32 y = 0; y < heightCount; y++)
{
Color c;
Double value = mass[x, y];
c = GetColorByValue(value);
dc.DrawRectangle(new SolidColorBrush(c), null,
new Rect(x * step - step/2, y * step - step/2, step, step));
}
}
そしてそれは長方形の量の場合には正常に動作(それは200MBのRAMを取得する)約250×250です。しかし、それらの数が750x750なら、レンダリングのプロセスが長すぎて遅い(2.5Gb以上のRAMを取得する)
次のステップでは、バッファーのようなビットマップを使用していました。しかし、私のDrawingVisualのサイズには問題があります。ビジュアルは本当に大きいです。 したがって、RenderTargetBitmapのコンストラクタがException "処理中にオーバーフローを生成しました"という例外をスローするため、フルサイズのビットマップを作成することはできません。
最後に小さなビットマップを作成し、それを私の視覚に引き伸ばしました。しかし、問題は同じです(処理が遅すぎ、RAMが大量になります)。
要素をレンダリングして適切な時間とソースを得るためには、どうすればよいですか?
よろしくお願いいたします。
ありがとうございます!
伝えるのは難しいです。 Visual Studioで[分析ツール](http://msdn.microsoft.com/en-us/library/ms182372(v = vs.100).aspx)を使用して、最も問題の原因を特定する必要があります。 – Will
井戸250 * 250 = 62500と200Mbかかる。 750 * 750 = 562500で、RAMの10倍になります。右のように見えます。 50万の四角形??? – Phil
@ウィル私の主な問題は、コードがwpfで正確にレンダリングされていることを理解しています。なぜなら、私のコードは終わりまで動作し、レンダリングのプロセスは残りの時間を要するからです。 – Nick