Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何可视化算法的步骤_C#_Wpf_Graphics - Fatal编程技术网

C# 如何可视化算法的步骤

C# 如何可视化算法的步骤,c#,wpf,graphics,C#,Wpf,Graphics,如何延迟算法的执行以直观地显示算法中每次迭代的结果?当我尝试更新下面代码中对象的高度时,它只显示最终结果。如何显示每一步发生的情况 namespace BubbleSortRappresentazione_grafica { public partial class MainWindow : Window { int[] v; public MainWindow() { InitializeCom

如何延迟算法的执行以直观地显示算法中每次迭代的结果?当我尝试更新下面代码中对象的高度时,它只显示最终结果。如何显示每一步发生的情况

namespace BubbleSortRappresentazione_grafica
{     
    public partial class MainWindow : Window
    {
        int[] v;

        public MainWindow()
        {
            InitializeComponent();

            Random rnd = new Random();

            v = new int[10];
            for (int j = 0; j < 10; j++)
            {
                v[j] = rnd.Next(0, 100);   
            }
            _0.Height = v[0] + 20;
            _1.Height = v[1] + 20;
            _2.Height = v[2] + 20;
            _3.Height = v[3] + 20;
            _4.Height = v[4] + 20;
            _5.Height = v[5] + 20;
            _6.Height = v[6] + 20;
            _7.Height = v[7] + 20;
            _8.Height = v[8] + 20;
            _9.Height = v[9] + 20;   
        }    

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // algoritmo ordinamento    

            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {                       
                    if (v[j] > v[i])
                    {   
                        int tmp = v[j];
                        v[j] = v[i];
                        v[i] = tmp;

                        _0.Height = v[0] + 20;
                        _0.Content = v[0];
                        _1.Height = v[1] + 20;
                        _1.Content = v[1] ;
                        _2.Height = v[2] + 20;
                        _2.Content = v[2];
                        _3.Height = v[3] + 20;
                        _3.Content = v[3] ;
                        _4.Height = v[4] + 20;
                        _4.Content = v[4];
                        _5.Height = v[5] + 20;
                        _5.Content = v[5];
                        _6.Height = v[6] + 20;
                        _6.Content = v[6];
                        _7.Height = v[7] + 20;
                        _7.Content = v[7];
                        _8.Height = v[8] + 20;
                        _8.Content = v[8];
                        _9.Height = v[9] + 20;
                        _9.Content = v[9];

                        Thread.Sleep(100);   
                    }   
                }
            }
        }
    }
}
namespace bubblesortrappresentationone_grafica
{     
公共部分类主窗口:窗口
{
int[]v;
公共主窗口()
{
初始化组件();
随机rnd=新随机();
v=新整数[10];
对于(int j=0;j<10;j++)
{
v[j]=rnd.Next(01100);
}
_0.高度=v[0]+20;
_1.高度=v[1]+20;
_2.高度=v[2]+20;
_3.高度=v[3]+20;
_4.高度=v[4]+20;
_5.高度=v[5]+20;
_6.高度=v[6]+20;
_7.高度=v[7]+20;
_8.高度=v[8]+20;
_9.高度=v[9]+20;
}    
私有无效按钮\u单击(对象发送者,路由目标e)
{
//序数算法
对于(int i=0;i<10;i++)
{
对于(int j=0;j<10;j++)
{                       
如果(v[j]>v[i])
{   
int tmp=v[j];
v[j]=v[i];
v[i]=tmp;
_0.高度=v[0]+20;
_0.内容=v[0];
_1.高度=v[1]+20;
_1.内容=v[1];
_2.高度=v[2]+20;
_2.内容=v[2];
_3.高度=v[3]+20;
_3.内容=v[3];
_4.高度=v[4]+20;
_4.内容=v[4];
_5.高度=v[5]+20;
_5.内容=v[5];
_6.高度=v[6]+20;
_6.内容=v[6];
_7.高度=v[7]+20;
_7.内容=v[7];
_8.高度=v[8]+20;
_8.内容=v[8];
_9.高度=v[9]+20;
_9.内容=v[9];
睡眠(100);
}   
}
}
}
}
}

我相信您真正想要的是方法:

for(int i=0;i<10;i++)
{
对于(int j=0;j<10;j++)
{                       
如果(v[j]>v[i])
{   
//...
睡眠(100);
Application.DoEvents();
}   
}
}

这将导致您在循环中所做的任何可视更改都将应用于每个迭代中。你也可以考虑删除<代码>睡眠()/代码>,因为我不确定它对你有多有用。

你想查看组件“实时更新”的内容和高度吗?当方法完成时,修改只被改写到图形界面,因为这些调用阻止了UI线程。使用
BackgroundWorker
实时查看更改。当我执行循环时,例如,我想更改for中按钮的大小,它会更改大小,但不会以图形方式更改,它会在循环结束时显示更改,而不是在循环期间显示更改,因此,我想找到一些东西,使变化的图形,在我想看到的变化,在实时我不明白大家怎么认为这是不清楚什么是问,但如果它是重新开放,我会张贴一个完整的海报工作的例子。
for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 10; j++)
    {                       
        if (v[j] > v[i])
        {   
            //...
            Thread.Sleep(100);
            Application.DoEvents();
        }   
    }
}