什么是ScaleTransform有用?

时间:2011-07-15 00:16:46

标签: c# wpf xaml size scaletransform

为什么我应该使用ScaleX =“2”而不是我的控制宽度的两倍?

<Button Width = "100" Content="Button1"/>


<Button Width = "50" Content="Button2">
   <Button.RenderTransform>
      <ScaleTransform ScaleX="2" />
   </Button.RenderTransform>
</Button>

这两个按钮看起来完全相同,那么什么尺度适合

3 个答案:

答案 0 :(得分:3)

“完全相同”的概念似乎与我的不同。

Screenshot

您使用WidthHeight指定的尺寸会影响控件在布局中占用的空间,这意味着控件可能占用更多或更少的空间但字体大小将保持不变例如。 RenderTransform是一种操作,它不再涉及布局,因此可能会扭曲控制。

  

渲染变换不会重新生成布局大小或渲染大小   信息。渲染变换通常用于动画或   对元素应用临时效果。例如,元素   可能在聚焦或鼠标移动时变焦,或者可能在加载时抖动   请注意用户界面(UI)的那一部分。


另请参阅LayoutTransform属性,该属性确实会影响布局但仍会扭曲控件。

答案 1 :(得分:2)

当您无法缩放控件的某些部分时,它很有用。考虑DatePicker控件。默认实现的下拉日历对我的用户来说太小了,所以我将这段XAML引入到我的App.xaml文件中:

<Style TargetType="w:DatePicker">
    <Setter Property="CalendarStyle">
        <Setter.Value>
            <Style TargetType="w:Calendar">
                <Setter Property="LayoutTransform">
                    <Setter.Value>
                        <ScaleTransform ScaleX="1.5" ScaleY="1.5" />
                    </Setter.Value>
                </Setter>
            </Style>
        </Setter.Value>
    </Setter>
</Style>

现在日历是1.5倍,我的用户很高兴。我可以直接设置“CalendarWidth”或“CalendarHeight”属性,因此ScaleTransform保存了当天。

答案 2 :(得分:2)

如果它比带有宽度的按钮更复杂怎么办?如果您有复杂的路径/几何,或者甚至是一组控件,该怎么办?你不想去手动改变一切。如果你有一个自定义控件,你想给一个实例大小100x100,另一个实例150x150怎么办?如果您正在实施缩放功能(想想谷歌地图)怎么办?

简而言之,对于您的具体示例,它没有提供太多用途。但是还有许多其他情况。