Как синхронизировать стрелу с баллистой
У меня есть стрела на баллисте и возможность делать вверх вниз эту направляющую:
Но я все не могу никак её синхронизировать с направляющей:
Подскажите, пожалуйста, какие тут формулы можно использовать или как это реализовать.
Вот код, относящийся ко всему этому:
protected Image Arrow = new Image();
public Image Arrowkeeper = new Image();
RotateTransformArrow.Angle = 0;
RotateTransformArrowkeeper.Angle = 0;
Ballista_Canvas.Children.Add(Arrow);
Ballista_Canvas.Children.Add(Arrowkeeper);
Canvas.SetTop(Arrow, 617);
Canvas.SetLeft(Arrow, 1214);
Arrow.Width = 240;
Arrow.Height = 204;
Canvas.SetTop(Arrowkeeper, 635);
Canvas.SetLeft(Arrowkeeper, 1264);
Arrowkeeper.Width = 262;
Arrowkeeper.Height = 220;
RotateTransformArrow.CenterX = 408;
RotateTransformArrow.CenterY = 168;
RotateTransformArrowkeeper.CenterX = Arrowkeeper.Width - (Arrowkeeper.Width * 70.9 / 100);
RotateTransformArrowkeeper.CenterY = Arrowkeeper.Height - (Arrowkeeper.Height * 70 / 100);
bool arrowIsMovingUp = false;
bool arrowIsMovingDown = false;
Arrow.Source = BitmapFrame.Create(new Uri(IAR, UriKind.RelativeOrAbsolute));
Arrowkeeper.Source = BitmapFrame.Create(new Uri(IARK, UriKind.RelativeOrAbsolute));
public void Move_Bow(object sender, EventArgs e)
{
if (arrowIsMovingUp)
{
if (RotateTransformArrowkeeper.Angle < 2)
{
RotateTransformArrow.Angle += 1;
RotateTransformArrowkeeper.Angle += 1;
Arrow.RenderTransform = RotateTransformArrow;
Arrowkeeper.RenderTransform = RotateTransformArrowkeeper;
}
}
else if (arrowIsMovingDown)
{
if (RotateTransformArrowkeeper.Angle > -55)
{
RotateTransformArrow.Angle -= 1;
RotateTransformArrowkeeper.Angle -= 1;
Arrow.RenderTransform = RotateTransformArrow;
Arrowkeeper.RenderTransform = RotateTransformArrowkeeper;
}
}
}
CompositionTarget.Rendering += mainballista.Move_Bow;
Источник: Stack Overflow на русском