首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF (Silverlight)布局转换对app性能的影响

WPF (Silverlight)布局转换对app性能的影响
EN

Stack Overflow用户
提问于 2011-01-27 10:44:28
回答 2查看 719关注 0票数 5

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

  • RotateTransform
  • ScaleTransform
  • SkewTransform
  • TranslateTransform

我想知道使用这种转换在多大程度上减缓了页面的呈现速度?

更具体地说。例如,我在页面上有1000个简单元素(比如矩形),这些元素被放置在行中,使用的是网格和一些StackPanels。如果我将RotateTransform应用于所有或部分应用程序,它会对我的应用程序的性能产生明显的影响吗?

当然,我可以试着看看会发生什么,但也许有些明显的事情我根本没有意识到。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-29 01:28:58

下面是一个原型,您可以使用它来实验各种选项:

代码语言:javascript
复制
<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>

和一个数据生成器:

代码语言:javascript
复制
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);
    }
}

左上角是这样的:

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

票数 1
EN

Stack Overflow用户

发布于 2011-02-23 14:43:48

LayoutTranform将导致布局系统的完整传递。这将导致所有屏幕上的对象被重新测量和重新排列。这是一种数学密集型操作,与屏幕上对象的数量成正比。

如果这不是您所需要的,那么使用RenderTransform会更快,因为它不会导致一个完整的布局传递。使用一个对象对另一个对象的影响将取决于屏幕上显示的其他对象以及转换需要应用于哪些对象的情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4815316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档