使用c#,实现2D旋转木马的最佳方式是什么。
什么会是更好的WPF或Windows窗体。如何是最好的动画方式?只是使用计时器样式的记号逐渐移动像素?
类似(psuedo代码):
//draw carousel here
using Timer every tick move the images left slightly
感谢
更多信息:
我希望它运行得很快,因为将有30个图像,我希望它在选择随机一个之前滚动并循环一到两次
WPF一路过关斩将!最简单的方法是创建一个带有ListBox的UserControl,并将项目集合绑定到它。诀窍是如何包含这些项目。
这是我不久前编码的一个样本:
<ListBox ItemsSource="{Binding Files}" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SelectionMode="Single" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="10" VerticalAlignment="Center" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemContainerStyle>
</ListBox.ItemContainerStyle>
</ListBox>
使用具有Orientation="Horizontal"
和ScrollViewer.HorizontalScrollBarVisibility="Auto"
的StackPanel也可以完成同样的操作。
有任何问题,请告诉兄弟。
抱歉,错过了这个部分:
最好的动画方式是什么?只是使用计时器样式的记号逐渐移动像素?
最好的方法是使用WPF的Storyboard和Animation类。总体思路是:
- 有向前/向后箭头
- 根据单击的箭头,删除第一个项目并将新项目添加到列表末尾,或者删除最后一个项目并在列表开头插入项目
- 使用动画模拟添加/移除,即淡出项目(或向左/向右滑动,无论怎样),然后在动画完成后,从绑定集合中移除实际项目
此外,请确保绑定的集合具有可变数量的项(在我的示例中为10),并使用另一个集合来跟踪下一个要删除和添加的项。