背景: 我加载的图象分成一堆叠面板(称为MainStack)水平显示(为了讨论起见,10个图像)仅在4倍视图的图像空间。当我从列表中加载图像时,我将每个图像的宽度设置为300,以使它们都处于相同大小的框中。WPF保证金厚度
我想将图像从向右移动使用堆叠面板的保证金(左)财产离开了。我希望左边滚动的外观与每幅图像的宽度完全相同(以4秒的延迟循环),直到最后一幅图像出现为止。这里是我的代码为保证金动画:
Dim result As New Storyboard
Dim animation As New ThicknessAnimation
animation.From = MainStack.Margin
animation.EasingFunction = New PowerEase() With {.EasingMode = EasingMode.EaseInOut, .Power = 3}
animation.To = New Thickness(-300, 0, 0, 0)
animation.Duration = New Duration(TimeSpan.FromSeconds(1.5))
Storyboard.SetTarget(animation, MainStack)
Storyboard.SetTargetProperty(animation, New PropertyPath("Margin"))
result.Children.Add(animation)
result.Begin()
奇怪的事情正在发生。堆叠面板正在向左移动,但只有图像宽度的一半左右。
这是怎么回事?!?
/*编辑*/ 按H.B.建议,我试图实现一个TranslateTransform,但没有太大的成功。
任何人都可以看到这个代码的任何问题?
Dim translatePosition = New Point(300, 0)
RenderTransform = New TranslateTransform()
Dim d As New Duration(New TimeSpan(0, 0, 0, 1, 30))
Dim x As New DoubleAnimation(translatePosition.X, d)
Storyboard.SetTarget(x, MainStack)
Storyboard.SetTargetProperty(x, New PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"))
Dim sb As New Storyboard()
sb.Children.Add(x)
sb.Begin()
似乎没有什么事情发生。 本
为什么不应用TranslateTransform并为其生成动画? –
嗨H.B.感谢评论,我正在研究它。你能够建议我可以使用的任何代码吗?我正在阅读TranslateTransform与Storyboard没有很好地配合。 – Ben
这是我的新闻,谁说的? –