2016-09-09 5 views
1

WPFについては私はランクアマチュアです。私は彼のLego Mindstormsロボットのために私の男の子とUIを構築しています。WPFを使用したステアリングホイールの変換

方向ボタンの代わりにステアリングホイールを置くように要求されていますが、回転変換を含めてこれを行うことができますが、マウスのドラッグ/ドラッグの方向。

私がこれまで持っているXAMLはこれです:ユーザがそのハンドルを左または右に「ドラッグ」し、それに応じて画像の回転角を変換されたとき、私は後に検出されています何

<Image x:Name="steering" HorizontalAlignment="Left" Height="146" Margin="253,67,0,0" 
      VerticalAlignment="Top" Width="146" Source="images/steering-wheel.png" RenderTransformOrigin="0.5,0.5"> 
     <Image.RenderTransform> 
      <RotateTransform CenterX="0.5" CenterY="0.5" /> 
     </Image.RenderTransform> 
     <Image.Triggers> 
      <EventTrigger RoutedEvent="Loaded"> 
       <BeginStoryboard> 
        <Storyboard RepeatBehavior="Forever"> 
         <DoubleAnimation Storyboard.TargetProperty="(Image.RenderTransform).(RotateTransform.Angle)" 
             From="0" To="360" Duration="0:0:2" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Image.Triggers> 
    </Image> 

。私はどこから始めるべきですか?

答えて

1

私はあなたがローテーションに、ステアリングホイールの中心とあなたはちょうどその

private void Steering_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (e.LeftButton == MouseButtonState.Pressed) 
    { 
     var control = sender as Ellipse; 
     var point = e.GetPosition(control); 
     var centre = new Point(control.Width/2, control.Height/2); 
     var vector = point - centre 
     Steering.Angle = (Math.Atan2(vector.X,vector.Y) * 180/Math.PI); 
     //note default behaviour of Atan2 is Angle 0 = East and Anti Clockwise is a positive angle, 
     //by swapping X and Y north is now 0 angle and clockwise is positive 
    } 
} 

を次のようにこれが行われ、マウスの位置を計算するために2つの基準点が必要

似た何かをやりました `RotateTransformが回転=新しいRotateTransform((Math.Atan2(vector.X:私はこの上のわずかに異なるバリエーションを適用回転

<Ellipse 
    MouseMove="Steering_MouseMove" > 
    <Ellipse.RenderTransform> 
     <RotateTransform Angle="{Binding Steering.Angle}" CenterX="0.5" CenterY="0.5"/> 
    </Ellipse.RenderTransform> 
</Ellipse> 
+0

をバインドする必要があります、vector.Y)* 180/Math.PI)); steering.RenderTransform = rotate; ' それ以外の場合は、感謝しました。 –

関連する問題