Ich bin am rotieren



  • Ich möchte mit WPF eine Waage animieren.Ich rotieren den Arm der Waage und die Waagschalen mit den selben Winkel um den Mittelpunkt des Arms.Da die Schalen nach unten hängen sollen versuche ich diese nochmal in die entgegensetzte Richtung um ihren Mittlepunkt zu rotieren.

    Mein Problem ist das die Schalen sich vom Arm fortbewegen,wenn dieser sich dreht.

    Hier ist mal das Xaml der linken Schale:

    <Path Name="scale_dish_left" Stroke="Black" Fill="DarkGray">
      <Path.RenderTransform>
         <TransformGroup>
           <RotateTransform x:Name="rt_dish_left" CenterX="350" CenterY="135" Angle="0" />
           <RotateTransform x:Name="rt_dish_left_swing" CenterX="150" CenterY="177.777" Angle="0"/>
          </TransformGroup>
         </Path.RenderTransform>
         <Path.Data>
          <CombinedGeometry>
            <CombinedGeometry.Geometry1>
              <PathGeometry>
                <PathFigure StartPoint="100 230">
                  <LineSegment Point="200 230"/>
                   <ArcSegment Point="100 230" Size="10 10" SweepDirection="Clockwise"/>
                 </PathFigure>
                </PathGeometry>
              </CombinedGeometry.Geometry1>
              <CombinedGeometry.Geometry2>
                <PathGeometry>
                 <PathFigure StartPoint="100 230">
                   <LineSegment Point="150 135"/>
                   <LineSegment Point="200 230"/>
                   <LineSegment Point="197 230"/>
                   <LineSegment Point="150 140"/>
                   <LineSegment Point="103 230"/>
                 </PathFigure>
                </PathGeometry>
               </CombinedGeometry.Geometry2>
              </CombinedGeometry>
             </Path.Data>
    </Path>
    

    Und der Code mit dem ich die Animation starte:

    StartAnimation(double angle)
    {
     Duration animation_duration =  new Duration(new TimeSpan(0, 0, 2));
     DoubleAnimation arm_animation = new DoubleAnimation(angle, animation_duration);
     DoubleAnimation dish_left_rotation = new DoubleAnimation(angle,animation_duration);
     DoubleAnimation dish_left_swing = new DoubleAnimation(-angle,animation_duration);
    
     rt_dish_left.BeginAnimation(RotateTransform.AngleProperty,dish_left_rotation);
       rt_dish_left_swing.BeginAnimation(RotateTransform.AngleProperty,dish_left_swing);
     rt_scale_arm.BeginAnimation(RotateTransform.AngleProperty, arm_animation);
    }
    

    Hat jemand eine Idee wo ich den Fehler mache?



  • Ich habe jetzt den Mittelpunkt auf den Punkt an dem die Schale den Arm berührt geändert.Ich habe ein bisschen mit verschiedenen Winkeln ausprobiert es sieht so aus als wenn die erste Rotation nicht den Mittelpunkt der Zweiten Rotation ändert,da sich die Waagschale sich immer um den selben Punkt dreht egal auf welchen Winkel die erste Rotation steht.Hat einer eine Idee wie ich es trotzdem hinkriege das die Waagschalen waagerecht bleiben?



  • Hab es gelöst.Ich musste nur die Rotation der Schale um sich selbst vor der Rotation der Schale um den Mittelpunkt des Armes ziehen.


Anmelden zum Antworten