如何使图片框在c#中只旋转一次?

时间:2017-10-10 15:30:06

标签: c# forms rotation

我正在制作迷你游戏。当我向左和向右转动时,我想用这段代码旋转我的播放器picPlayer.Image.RotateFlip(RotateFlipType.RotateNoneFlipX)我的移动代码是:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
   //when one of the movement keys are pressed, 
   //makes it's variable true.

   if (e.KeyCode == Keys.Right || e.KeyCode == Keys.D)
    {
        moveRight = true;
    }
}

另外,我的计时器程序是:

private void tmrMovementPlayer_Tick(object sender, EventArgs e)
{
    //whenever right arrow is pressed,
    if (moveRight == true)
    {
        //decrease the x variable by 5 (moves right)
        x = x + PLAYER_SPEED;
        //check for boundaries (if the player is out of the screen)
        if (x >= this.ClientSize.Width - picPlayer.Width)
        {
            //if yes, set it back to the boundary.
            x = this.ClientSize.Width - picPlayer.Width;
        }
        //check the subprogram for info
        MovePlayer();
    }
}

此时我该怎么办?感谢。

2 个答案:

答案 0 :(得分:1)

所以,由于另一个答案,我找到了解决方案。这有点不同。我创建了另一个名为" goingRight"的布尔值。只是为了轮换。

if (e.KeyCode == Keys.Right || e.KeyCode == Keys.D)
{
    //make move right true
    moveRight = true;
    //if i was going left,
    if (goingRight == false)
    {
        //say it im going right
        goingRight = true;
        //and flip it (only if i was going left before)
        picPlayer.Image.RotateFlip(RotateFlipType.RotateNoneFlipX);
    }
}

再次感谢所有的帮助。

答案 1 :(得分:0)

尝试类似......

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    //when one of the movement keys are pressed, 
    //makes it's variable true.

    if (e.KeyCode == Keys.Right || e.KeyCode == Keys.D)
    {
        if (!moveRight)
        {
            picPlayer.Image.RotateFlip(RotateFlipType.RotateNoneFlipX)
            moveRight = true;
        }       
    }
}