#479 – 对Canvas面板中的子元素使用布局转换(Using a Layout Transform on Child Elements in a Canvas)

本文探讨了WPF中Canvas面板子元素的LayoutTransform变换应用,重点介绍了RotateTransform、ScaleTransform和SkewTransform等变换方式。LayoutTransform不同于RenderTransform,它能够影响布局结果,为用户提供强大的缩放和旋转功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你可以使用对Canvas面板里面的子元素使用LayoutTransform 对其进行灵活的变换。在这里问讨论除了TranslateTransform 以外的几种变换RotateTransform,ScaleTransform 和SkewTransform

<Canvas>
    <Button Content="Hopalong Cassidy" Canvas.Left="10" Canvas.Top="10">
        <Button.LayoutTransform>
            <RotateTransform Angle="45"/>
        </Button.LayoutTransform>
    </Button>
    <Button Content="Roy Rogers" Canvas.Right="10" Canvas.Top="10">
        <Button.LayoutTransform>
            <TransformGroup>
                <ScaleTransform ScaleX="2.0"/>
                <RotateTransform Angle="-45"/>
            </TransformGroup>
        </Button.LayoutTransform>
    </Button>
    <Button Content="Spade Cooley" Canvas.Left="10" Canvas.Bottom="10">
        <Button.LayoutTransform>
            <SkewTransform AngleX="20"/>
        </Button.LayoutTransform>
    </Button>
</Canvas>

原文地址: https://wpf.2000things.com/2012/01/24/479-using-a-layout-transform-on-child-elements-in-a-canvas/

**********************************************************译者注***********************************************************

RenderTransform 不同,LayoutTransform 会影响布局的结果。

设置LayoutTransform 转换方式可以提供强大的缩放和旋转功能。但是,LayoutTransform 会忽略 TranslateTransform 操作。这是因为 FrameworkElement 的子元素的布局系统会将已经进行的变换(已缩放或已旋转)元素的位置偏移量自动纠正到父元素的布局系统和坐标系中。,从而忽略掉TranslateTransform 变换。

如果在不需要布局系统更新布局的时候使用LayoutTransform ,在执行性能上来说并不好。因为将 LayoutTransform 应用于 Panel 的 Children 集合后,它将触发一次新的布局系统处理过程,并强制重新度量和重新排列屏幕上的所有对象,这个时候建议使用RenderTransform。但是如果要更新UI,使用LayoutTransform 是正确的选择。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值