wpf - WPF (Silverlight) 布局 (Render)Transform 对应用性能的影响

标签 wpf silverlight performance xaml layout

在设计 WPF 或 Silverlight 应用程序的 UI 部分时,我们可以将一些显示转换(LayoutTransformRenderTransform)应用于视觉元素。其中一些转变是:

  • 旋转变换
  • 比例变换
  • 倾斜变换
  • 翻译转换

  • 我想知道使用这种转换会在多大程度上减慢渲染页面的速度?

    更具体。例如,我有一千个简单的元素,比如矩形,在页面上,它们被放置在行中,使用 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);
        }
    }
    

    左上角是这样的:

    transform performance

    您可以通过调整窗口大小来触发布局,在我的机器上它有点迟钝但可用。然后您可以测试其他容器、其他转换、布局与渲染转换等,看看它们有什么不同。

    关于wpf - WPF (Silverlight) 布局 (Render)Transform 对应用性能的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815316/

    相关文章:

    c# - 每层的 MVVM 角色

    wpf - 水平滚动条未出现在 DataGrid 中

    javascript - 提高 html canvas mousemove 图像蒙版的性能

    mysql数据库.ibd文件大小

    wpf - 无法隐藏工具栏夹点

    c# - 使用 c# wpf 放大 imageView 图像

    c# - 是否有完全托管的 (.NET) Lua 解释器?

    silverlight - 创建样式以在后面的代码中旋转轴标签

    c# - 如何阻止 ReSharper 在需要 Action 的 lambda 表达式上显示错误?

    sql - PostgreSQL。改善指标