2011-08-30 69 views
0

背景: 我加载的图象分成一堆叠面板(称为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() 

似乎没有什么事情发生。 本

+0

为什么不应用TranslateTransform并为其生成动画? –

+0

嗨H.B.感谢评论,我正在研究它。你能够建议我可以使用的任何代码吗?我正在阅读TranslateTransform与Storyboard没有很好地配合。 – Ben

+0

这是我的新闻,谁说的? –

回答

0

我认为你应该尝试把你的整个堆栈面板放在一个画布中,并且只是动画Canvas.Left属性来滚动图像。