2014-09-04 57 views
1

我有一个WPF图像。我会在其中渲染一个方向盘。我想模拟方向盘的旋转。用户应触摸方向盘的任何地方。它应该顺时针和逆时针旋转。范围是0到400度和0到-400度。它和普通车一样。旋转方向盘 - WPF

任何想法开始?请举个合乎逻辑的例子,我是一名开发人员,但不是数学家,所以我不知道如何计算旋转角度。

我的目标设备是一个基于触摸的Windows平板电脑。

-Rajeevan

回答

2

动画在WPF是很容易...有没有需要任何的我们是数学家。您可以旋转任何UIElement很容易使用RotateTransform ClassUIElement.RenderTransform Property

<Ellipse StrokeThickness="5" Stroke="Black" Width="100" Height="50"> 
    <Ellipse.RenderTransform> 
     <RotateTransform /> 
    </Ellipse.RenderTransform> 
</Ellipse> 

现在动态显示RotateTransform,我们可以使用Storyboard Class(其中有去一个BeginStoryboard的元素:

<BeginStoryboard> 
    <Storyboard RepeatBehavior="Forever"> 
     <DoubleAnimation Storyboard.TargetProperty="(Ellipse.RenderTransform). 
(RotateTransform.Angle)" From="0" To="360" Duration="0:0:2" /> 
    </Storyboard> 
</BeginStoryboard> 

最后,当控件加载时,我们可以触发此动画:

<Ellipse StrokeThickness="5" Stroke="Black" Width="100" Height="50" 
    RenderTransformOrigin="0.5,0.5"> 
    <Ellipse.Triggers> 
     <EventTrigger RoutedEvent="Loaded"> 
      <BeginStoryboard> 
       <Storyboard RepeatBehavior="Forever"> 
        <DoubleAnimation Storyboard.TargetProperty=" 
         (Ellipse.RenderTransform).(RotateTransform.Angle)" 
         From="0" To="360" Duration="0:0:2" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Ellipse.Triggers> 
    <Ellipse.RenderTransform> 
     <RotateTransform /> 
    </Ellipse.RenderTransform> 
</Ellipse> 

通过这些例子,我相信你会按照链接找出如何完成你的要求,而不是要求我做全部你的工作。

+0

我知道WPF对RotateRenderTransform有很强的支持。但就我而言,我认为这并不容易。它不会在按钮点击或图片加载时启动双动画。但是当我触摸并按住方向盘图像时,它必须相应地顺时针和逆时针旋转。它也不会是连续的旋转。在每次鼠标移动或触摸移动时,必须找到新的旋转角度。这个例子很好,我想我必须对它进行编码并从外部提供角度。为了找到角度,我可能需要一些数学。 – 2014-09-05 04:24:36

+0

我的朋友,我已经向您提供了MSDN上相关页面的链接以及一个可帮助您入门的示例。如果您通读链接的页面,您将看到您也可以从代码启动动画。由于这些是*你的*要求,*你*必须做一些工作来完成它们。我真的不确定,如果不为你做所有的工作,我还能做些什么。 – Sheridan 2014-09-05 07:56:46