Растровое изображение не работает должным образом в цикле

#c# #loops #draw

#c# #циклы #рисовать

Вопрос:

Я пытаюсь заставить растровое изображение отскакивать от верхней и нижней части окна. Который, кажется, работает нормально. Показанный метод рисования вызывается в цикле, что приводит к тому, что растровое изображение постоянно перерисовывается с новой позицией.

 public class Ball
{
double SpeedX = 4;
double SpeedY = 4;
int ballWidth = 1;
public double X {get; private set;}
public double Y {get; private set;}

public void Draw(Window screen)
{
    X  = SpeedX;
    Y  = SpeedY;
    if (Y <= 0) {
        SpeedY = -SpeedY;
        Y = 0;    
    }
   
    else if (Y >= (screen.Height - ballWidth)) {      
        SpeedY = -SpeedY;
        Y = screen.Height - ballWidth;
    }
    Bitmap.Draw(X,Y);
}
}
  

Тем не менее, я пытаюсь изменить начальные значения SpeedX и Speedy при создании растрового изображения. Когда я передаю эти значения, мое растровое изображение застревает в верхней / нижней части окна — SpeedY, по-видимому, приводит к 0, тогда как SpeedX продолжает работать (что приводит к тому, что растровое изображение скользит по верхней / нижней части экрана). Я что-то делаю не так? Я не понимаю, почему передача двух значений извне может испортить функцию рисования.

 public Ball RandomBall(Window game)
    { 
        Ball newball = new Ball(_Game);
        Random direction = new Random();
        
        newball.SpeedX = 5;
        newball.SpeedY = 5;

        return newball;
  

Комментарии:

1. Это, вероятно, не связано с вашей проблемой, но я думаю, что Y в первом случае должно быть установлено ballWidth значение, а не 0 if (и первое if должно проверяться на `ballWidth а не 0)

2. Приветствия, я только что изменил это. Однако это не решило проблему.