WPF画布绘制速度很慢

时间:2015-11-06 12:15:06

标签: c# wpf performance canvas

我正在构建地图编辑器以轻松创建2d级别。想象我的关卡如何使用画布。在这个画布上,我可以选择哪个块填充某种类型(如实体)。我确实添加了点击和拖动,但因为我在画布上实时绘制它变得非常慢,如果你以一个不错的速度绘制,它会跳过需要绘制的几个块。

我已经尝试了几个选项(在另一个线程中执行它。将它放在队列中的第一个)但没有一个有好的结果。

我使用以下代码绘制矩形:

 if (currentMap != null)
        {
            mapCanvas.Children.Clear();
            mapCanvas.Width = (currentMap.Breedte * blockScale);
            mapCanvas.Height = (currentMap.Hoogte * blockScale);
            for (int i = 0; i < currentMap.Hoogte; i++)
            {
                for (int j = 0; j < currentMap.Breedte; j++)
                {
                    Rectangle blok = new Rectangle();

                    blok.Stroke = new SolidColorBrush(Colors.Black);
                    blok.StrokeThickness = 0.3;
                    blok.Width = blockScale;
                    blok.Height = blockScale;
                    switch (currentMap.GetElement(j, i))
                    {
                        case 0:
                            blok.Fill = new SolidColorBrush(Colors.LightGray);
                            break;
                        case 1:
                            blok.Fill = new SolidColorBrush(Colors.Red);
                            break;
                        case 2:
                            blok.Fill = new SolidColorBrush(Colors.Green);
                            break;
                        case 3:
                            blok.Fill = new SolidColorBrush(Colors.Orange);
                            break;
                        case 4:
                            blok.Fill = new SolidColorBrush(Colors.Yellow);
                            break;
                        default:
                            blok.Fill = new SolidColorBrush(Colors.Black);
                            break;

                    }
                    blok.SetValue(Canvas.LeftProperty, (double)(blockScale * j));
                    blok.SetValue(Canvas.TopProperty, (double)(blockScale * i));

                    mapCanvas.Children.Add(blok);
                }
            }
        }

我确实遇到了一个解决方案,可以在此链接的画布上绘制得更快: Speed up adding objects to Canvas In WPF

但问题是我似乎无法在当前项目或测试项目中使用它。

我希望你们可以帮助我加快绘图速度,或者至少它可以识别它需要绘制的每个块。

如有进一步的问题,请问我会尽量提供详细信息

0 个答案:

没有答案