Если вы хотите создать игру с движущимися объектами, вам следует изучить использование XNA или игрового движка, такого как Unity, потому что производительность C#/XAML не будет хорошей.
Если вы действительно хотите использовать C#/xaml, вам нужно будет рассчитать позицию вашего управления изображением самостоятельно. Для того, чтобы установить позицию вы можете поместить изображение внутри Canvas и установить позицию так:
Canvas.SetTop(myControl,XPosition);
Canvas.SetLeft(myControl,YPosition);
Вы также можете использовать раскадровку для анимации объектов, но это, вероятно, будет более сложным, если ускорение и направление постоянно меняются
Чтобы воспользоваться преимуществами аппаратного ускорения, вам нужно будет установить CacheMode = "BitmapCache" на движущийся объект.
Вот код, чтобы вычислить положение объекта:
public class ObjectInfo
{
public Vector2 Position { get; set; }
public Vector2 Speed { get; set; }
public Vector2 Acceleration { get; set; }
}
private DispatcherTimer dispatcherTimer;
private int refreshTimeMilisecond = 100;
private ObjectInfo myObject;
public void Init()
{
myObject = new ObjectInfo();
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Interval = TimeSpan.FromMilliseconds(refreshTimeMilisecond);
dispatcherTimer.Tick += dispatcherTimer_Tick;
}
void dispatcherTimer_Tick(object sender, EventArgs e)
{
myObject.Position = myObject.Position + myObject.Speed*refreshTimeMilisecond;
myObject.Speed = myObject.Speed + myObject.Acceleration * refreshTimeMilisecond;
Canvas.SetTop(myControl, myObject.Position.X);
Canvas.SetLeft(myControl, myObject.Position.Y);
}
В XAML:
<Canvas>
<Image x:Name="myControl" CacheMode="BitmapCache" Source="SmyleyImagePath"/>
</Canvas>
Вам нужно будет играть с параметром refreshTimeMilisecond, чтобы выяснить, что работает лучше всего
Я попытаюсь заставить его работать, но как я могу преобразовать ускорение в координаты? Я мог бы использовать xna или что-то подобное, просто, что мне не нравится разрабатывать только код, код и код, мне нравится какой-то графический дизайн, а также - единство pro - путь к дорогому на данный момент. – Erik
обновил мой ответ, чтобы вы начали с того, как для расчета позиции –
Поручите, спасибо вам! Я собираюсь потратить некоторое время на выяснение этого и попытаться заставить все работать. Еще раз спасибо :) – Erik