我一直在研究可视化复杂功能的WPF应用程序 在画布上用彩色矩形。目前,当点击一个按钮时,同时绘制了大约40,000个矩形。问题是如果在调试模式(F5)下执行我的应用程序需要几秒钟,而如果在没有重新布线(Ctrl + F5)的情况下执行它需要一分钟,直到在画布上绘制所有矩形。分析内存表明,调试模式下的内存使用量比正常模式下快得多。
为了更好地理解: 我有一个循环,以0.05步骤经过(-5,-5)到(5,5)之间的所有复数。对于每个计算值,根据相位和幅度评估矩形的颜色。
编辑: 单击一个按钮后循环开始,c是复杂类的实例,r,i是双重值,以保证复数的当前值:
c = new Complex(-5, -5);
while(c.Real < 5){
r = c.Real;
rsum = 0.0d;
while(c.Imaginary < 5){
ShowRect(c);
i = this.c.Imaginary;
c = new Complex(r, i + 0.05);
isum += 0.05d;
}
r = c.Real;
c = new Complex(r + 0.05, -5);
rsum += 0.05d;
}
private void ShowRect(Complex c){
//Some calculation stuff with res as result value
rect = new Rectangle();
//Setting the properties of the rectangle object
rect.Fill = EvalColor(res);
canvas.Children.Add(rect);
private SolidColorBrush EvalColor(Complex com){
if(com.Phase <= -35 * Math.PI / 36)
return new SolidColorBrush(Color.FromRGB(1, 1, 1));
else if(...)
//same scheme for every statement
有谁知道为什么会这样?我刚刚找到一个没有任何答案的线程多年前写的。感谢任何帮助。
问候并度过愉快的一天