在设计 WPF 或 Silverlight 应用程序的 UI 部分时,我们可以将一些显示转换(LayoutTransform
或 RenderTransform
)应用于视觉元素。其中一些转变是:
我想知道使用这种转换会在多大程度上减慢渲染页面的速度?
更具体。例如,我有一千个简单的元素,比如矩形,在页面上,它们被放置在行中,使用 Grid 和一些 StackPanels。如果我申请
RotateTransform
在全部或部分上,它会对我的应用程序的性能产生显着影响吗?当然,我可以尝试看看会发生什么,但也许有些明显的事情我根本不知道。
最佳答案
这是一个原型(prototype),您可以使用它来试验各种选项:
<Grid>
<Grid.Resources>
<local:Range x:Key="sampleData" Minimum="1" Maximum="900"/>
</Grid.Resources>
<ItemsControl ItemsSource="{StaticResource sampleData}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="30" Columns="30"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" FontSize="8">
<TextBlock.LayoutTransform>
<RotateTransform Angle="30"/>
</TextBlock.LayoutTransform>
</TextBlock>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
和一个数据生成器:
class Range : List<int>, ISupportInitialize
{
public int Minimum { get; set; }
public int Maximum { get; set; }
public void BeginInit() { }
public void EndInit()
{
for (int i = Minimum; i <= Maximum; i++) Add(i);
}
}
左上角是这样的:
您可以通过调整窗口大小来触发布局,在我的机器上它有点迟钝但可用。然后您可以测试其他容器、其他转换、布局与渲染转换等,看看它们有什么不同。
关于wpf - WPF (Silverlight) 布局 (Render)Transform 对应用性能的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815316/