繁体   English   中英

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

[英]Flip Image(Mirror) in a PictureBox Control

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

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;
}

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

请勿创建其他图片框。 您看到的是原始图片,因为您没有修改原始图片,而是新创建的图片。

因此,修改后的代码如下:

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;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM