【问题标题】:How to swap Picture如何交换图片
【发布时间】:2014-04-17 14:56:33
【问题描述】:

您好,我有一个问题,如何将图片框中的图片交换为 EX:pictuebox1 显示 pic1 然后 pictuebox 2 显示 pic2 然后他们交换图片,然后图片框1显示图片2,图片框2显示图片3,然后他们再次交换。我怎么做?如果有人能帮助我,我会非常感激。

    string[] picture = {
                       @"ImageResource\Die_Images\die1.jpg",
                       @"ImageResource\Die_Images\die2.jpg",
                         @"ImageResource\Die_Images\die3.jpg",
                           @"ImageResource\Die_Images\die4.jpg",
                             @"ImageResource\Die_Images\die5.jpg",
                                @"ImageResource\Die_Images\die6.jpg"};
    int index = 0;
    public Form1()
    {
        InitializeComponent();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        index++;
        if (index >= picture.Length)
            index = 1;
        else

            pictureBox1.ImageLocation = string.Format(@"ImageResource\Die_Images\die{0}.jpg", index);
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            if (index >= picture.Length)
                index = 0;
            else
            pictureBox2.ImageLocation = string.Format(@"ImageResource\Die_Images\die{0}.jpg", index);
            pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;


    }

    private void button1_Click(object sender, EventArgs e)
    {
        timer1.Start();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        timer1.Stop();
    }

【问题讨论】:

  • 你需要在 if/else 语句中加上多于一行的括号
  • 感谢您指出这一点
  • 你在哪里设置定时器间隔?这是winforms/wpf
  • 交换对你来说是什么意思?两个图片框都应该交换它的图像吗?
  • 你应该设置pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;例如,在 Click 处理程序中......在每个刻度上设置是多余的。其实我并没有真正了解这种交换机制……你能更准确地描述一下吗?

标签: c# arrays winforms timer picturebox


【解决方案1】:

不确定这是您正在查看的内容,但请尝试一下。

private int operationState = 0; 

private void timer1_Tick(object sender, EventArgs e)
{
    switch(operationState)
    {
        case 0://Next image
        {
            pictureBox1.ImageLocation = picture[index];
            pictureBox2.ImageLocation = picture[index + 1];

            index++;
            if (index >= (picture.Length - 1))
            {
                index = 0;
            }
            break;
        }
        case 1://Swap
        {
            string tempLocation =  pictureBox1.ImageLocation;
            pictureBox1.ImageLocation = pictureBox2.ImageLocation;
            pictureBox2.ImageLocation = tempLocation;
            break;
        }
    }

    operationState = (++operationState) % 2;
}

我从 Tick 事件中删除了 SizeMode 设置代码,您只能在其他地方执行一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多