2
我的代碼中存在一些性能問題... 我需要將許多顏色的矩形呈現給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));
}
}
而且它工作正常矩形的數量的情況下是約250×(連帶200MB RAM)。但是,如果它們的數量是750x750,則渲染過程太長且太慢(獲得超過2.5Gb的RAM)
下一步是使用像緩衝區一樣的位圖。但是我的DrawingVisual的大小有問題。視覺真的很大。 所以不可能創建一個完整的位圖,因爲RenderTargetBitmap的構造函數拋出異常「圖像數據在處理過程中產生溢出」。
最後我創建了一個小的位圖並將其拉伸到我的視覺。然而,問題是相同的(它工作得太慢,並獲得大量的RAM)。
我該怎麼做才能使渲染元素的過程獲得足夠的時間和來源?
問候!
謝謝!
很難說。您應該在Visual Studio中使用[分析工具](http://msdn.microsoft.com/zh-cn/library/ms182372(v = vs.100).aspx)來確定是什麼原因導致您遇到最多問題。 – Will 2012-02-28 17:43:46
井250 * 250 = 62500,需要200Mb。 750 * 750 = 562500並且需要10倍的RAM。似乎是正確的。 50萬個矩形? – Phil 2012-02-28 20:41:08
@Will據我所知,主要問題是由wpf完全渲染,因爲我的代碼工作到最後,渲染過程需要休息一段時間。 – Nick 2012-02-29 05:27:51