我正在构建地图编辑器以轻松创建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
但问题是我似乎无法在当前项目或测试项目中使用它。
我希望你们可以帮助我加快绘图速度,或者至少它可以识别它需要绘制的每个块。
如有进一步的问题,请问我会尽量提供详细信息