在PictureBox控件中翻转图像(镜像)

时间:2014-02-13 18:32:10

标签: c# winforms picturebox

首先,我是C#的初学者。 我有一个picturebox和一个计时器(启用,间隔= 25)。 我在图片框中插入了一张鸟的gif图像。 在我写过的Timer事件中,

bool positionBird = true;

private void timer1_Tick(object sender, EventArgs e)
{
    if (PictureBox1.Location.X == Screen.PrimaryScreen.Bounds.Width)
    {
        positionBird = false;
    }
    else if (PictureBox1.Location.X == 0)
    {
        positionBird = true;
    }

    if(positionBird)
    {
        PictureBox1.Left += 1;
    }
    else
    {
        PictureBox1.Left += -1;
    }
}

但我想要实现的是,当图片框触及右侧时 边界和条件变得虚假,我想翻转鸟的形象 图片框。现在这只鸟正在迈克尔杰克逊的月球漫步!

我尝试使用下面的代码翻转鸟(镜像鸟)。

else
{
    PictureBox pict = new PictureBox();
    pict = PictureBox1;
    pict.Image.RotateFlip(RotateFlipType.RotateNoneFlipX);
    pict.Left += -1;
}

但它看起来很奇怪。它显示了翻转图像和正常图像。能够 有人帮我这个吗?正如我已经说过的,我是初学者。有些简单 带解释的代码会非常有用。还有人可以告诉我 我做错了什么?

1 个答案:

答案 0 :(得分:2)

不要创建另一个图片框。您正在查看原始图片,因为您尚未修改原始图片,而是修改了新图片。

所以修改后的代码如下:

bool positionBird = true;

private void timer1_Tick(object sender, EventArgs e)
{
    if (PictureBox1.Location.X == Screen.PrimaryScreen.Bounds.Width)
    {
        positionBird = false;
        PictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipX); // picture flips only once when touches boundary
    }
    else if (PictureBox1.Location.X == 0)
    {
        positionBird = true;
        PictureBox1.Image.RotateFlip(RotateFlipType.RotateNoneFlipX); // picture flips only once when touches boundary
    }

    if(positionBird)
    {
        PictureBox1.Left += 1;
    }
    else
    {
        PictureBox1.Left += -1;
    }
}