WPF(Silverlight)布局(渲染)的影响转换应用程序性能

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

> RotateTransform
> ScaleTransform
> SkewTransform
> TranslateTransform

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

更具体.例如,我在页面上有一千个简单元素,比如矩形,使用网格和一些StackPanel放入行中.如果我对所有或部分应用RotateTransform,它会对我的应用程序的性能产生显着影响吗?

当然,我可以尝试看看会发生什么,但也许有一些我根本不知道的显而易见的事情.

解决方法

这是您可以用来试验各种选项的原型:

<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);
    }
}

左上角看起来像这样:

您可以通过调整窗口大小来触发布局,在我的机器上它有点迟钝但可用.然后,您可以测试其他容器,其他变换,布局与渲染变换等,以查看它们之间的差异.

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...