gpt4 book ai didi

c# - 带有 slider 绑定(bind)的 TranslateTransform 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 20:12:48 27 4
gpt4 key购买 nike

无法理解为什么 Translatetransform 绑定(bind)不起作用。我有 3 个 slider - 一个用于缩放,2 个用于 x 和 y 变换(我在代码中将圆圈作为 Canvas 的子元素)。

我正在使用以下 XAML:

<Window x:Class="Visualizer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" WindowState="Maximized" WindowStartupLocation="CenterScreen" ResizeMode="NoResize">
<Canvas HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" Name="MainCanvas" >
<Canvas HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" Name="OperatorsCanvas" >
<ContentControl x:Name="OperatorsContent"/>
<Canvas.LayoutTransform>
<TransformGroup>
<ScaleTransform
CenterX="0"
CenterY="0"
ScaleX="{Binding ElementName=ScaleSlider,Path=Value}"
ScaleY="{Binding ElementName=ScaleSlider,Path=Value}"
/>
<TranslateTransform X="{Binding ElementName=TranslateXSlider,Path=Value}" Y="{Binding ElementName=TranslateYSlider,Path=Value}" />
</TransformGroup>
</Canvas.LayoutTransform>
</Canvas>
<Slider Canvas.Right="5" Width="154" Canvas.Top="5" HorizontalAlignment="Right" Name="ScaleSlider" ToolTip="Determines the UI scale factor."
Value="1" Minimum="0.1" Maximum="4"/>
<Slider Canvas.Bottom="0" Width="762" HorizontalAlignment="Stretch" Name="TranslateXSlider" Value="0" Minimum="-20" Maximum="20"/>
<Slider Canvas.Right="0" Canvas.Top="282" Width="423" RenderTransformOrigin="0.494,0.455" Height="16" Name="TranslateYSlider" Value="0" Minimum="-20" Maximum="20" >
<Slider.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="90"/>
<TranslateTransform/>
</TransformGroup>
</Slider.RenderTransform>
</Slider>
</Canvas>
</Window>

缩放有效,但变换无效。

最佳答案

LayoutTransform 中的翻译将被忽略,如 LayoutTransform 中的备注部分所述MSDN 上的文档。您必须将 LayoutTransform 替换为 RenderTransform 才能使其正常工作:

<Canvas ...>
<Canvas.RenderTransform>
<TransformGroup>
<ScaleTransform
ScaleX="{Binding ElementName=ScaleSlider,Path=Value}"
ScaleY="{Binding ElementName=ScaleSlider,Path=Value}"/>
<TranslateTransform
X="{Binding ElementName=TranslateXSlider,Path=Value}"
Y="{Binding ElementName=TranslateYSlider,Path=Value}"/>
</TransformGroup>
</Canvas.RenderTransform>
...
</Canvas>

另请注意,Slider 有一个 Orientation属性(property)。因此,无需在那里应用转换。

关于c# - 带有 slider 绑定(bind)的 TranslateTransform 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18953654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com