首页 > 解决方案 > C# Picturebox在旋转原始图像后不会显示新图像

问题描述

问题:旋转图片框图像(不是 pbx 的图像)后,分配给 pbx 的新图像将不会显示或更新。旋转后的图像仍显示在 pbx 中。经过几天的试验和搜索 SO 和其他人,我找不到解决方案。

下面的简化代码说明了这个问题。毫无疑问,我忽略了一些非常简单的问题-问题是“什么”?

在 Win10 1909 v18363.778 中使用 Visual Studio 运行 C# Winforms .Net 4.7.2

    private void btnOpen_Click(object sender, EventArgs e)
    {
        using (OpenFileDialog OpenFileDialog = new OpenFileDialog())
        {
            OpenFileDialog.Title = "Open Image...";
            OpenFileDialog.Filter = "Image File (*.bmp; *.gif; *.jpg; *.jpeg; *.png; *.wmf)|*.*";
            OpenFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
            if (OpenFileDialog.ShowDialog() == DialogResult.OK)
            {
                srcImg = Image.FromFile(OpenFileDialog.FileName);                                                    
                tmpImg = srcImg;
                pbx1.Image = tmpImg;
            }
        }
    }

    private void btnRotate_Click(object sender, EventArgs e)
    {
        tmpImg.RotateFlip(RotateFlipType.Rotate90FlipNone);
        pbx1.Image = tmpImg;
    }

    private void btnReset_Click(object sender, EventArgs e)
    {
        // following code will not load original source image to "pbx1.Image"
        // the rotated image remains displayed...

        pbx1.Image = null;
        pbx1.Image = srcImg;
        pbx1.Refresh();
    }

标签: c#imagewinformspictureboxreset

解决方案


推荐阅读