【发布时间】:2016-11-11 02:21:05
【问题描述】:
我正在一个包含画布的程序中工作, 此画布包括一些形状和 RuleLines , 我在画布上添加了一个网格,它看起来像这样
问题是当我操纵或缩放此画布时程序不流畅,
这是 C# 中的网格代码:
public void GridPartitions (Grid grid)
{
for (int ii = 0; ii < 50; ii++)
{
MyGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(20) });
MyGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(20) });
}
for (int row = 0; row < 50; row++)
{
for(int coulmn = 0; coulmn < 50; coulmn++)
{
var PartitionRectangle = new Rectangle();
PartitionRectangle.Stroke = new SolidColorBrush() { Color = Color.FromArgb(255, 0, 0, 0) };
PartitionRectangle.StrokeThickness = 0.2;
grid.Children.Add(PartitionRectangle);
Grid.SetRow(PartitionRectangle, row);
Grid.SetColumn(PartitionRectangle, coulmn);
}
}
}
但是在 Microsoft OneNote UWP 中 它有这个选项,无论 RuleLines 的数量是多少,它都运行得非常流畅,看起来像这样:
有什么想法可以改进我的代码吗?
谢谢。
【问题讨论】:
-
尝试将线条直接放在画布中而不是网格中。具有 50x50 单元格的 Grid 在布置其子级时可能不会那么高效。
-
我试过了,有一个明显的差异,但仍然不平滑和流畅,只要画布大小在变化并且我希望网格填充这个画布,我使用 ObservableCollection
,并且我已经将它与 Canvas 内的 ItemsControl 绑定在一起,现在我正在努力在线程内运行 CanvasSizeChanged 事件处理程序。我希望它能工作 -
能否分享一个可以重现此问题的演示?
-
好的,我会在优化这段代码时分享它