在图片框中显示图像

时间:2014-11-04 02:42:35

标签: c# winforms

我正在使用Windows表单C#,我有2个表单,第一个表单包含一个menuItem和一个pictureBox,当单击menuItem时,第二个表单出现。第二个表单还包含一个按钮,我想在单击第二个表单中的按钮时,第一个表单的pictureBox中会出现一个位图图像。

这是menuItem事件处理程序,它应该打开另一个表单并在pictureBox中加载图像(当点击第二个表单中的按钮时)

  private void imageToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Form3 win = new Form3();
        win.ShowDialog();

        pictureBox1.Image = myNormal.bmp; 
       // displaying.Displaybmp(pictureBox1, b);
        pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
    }

'myNormal'是一个包含位图图像的类。

我不知道为什么pictureBox没有加载图像。

2 个答案:

答案 0 :(得分:1)

首先创建接口以调用form1中的方法。

public interface IMyForm
{
    void ShowImage(Image image);
}

然后在Form1中实施该界面,并将图像分配到已实施方法ShowImage(Image)中的图片框。

public class Form1 : Form, IMyForm
{

    public void ShowImage(Image image)
    {
        this.PictureBox1.Image = image;
    }

    private void menuitem_Click(object sender, EventArgs e)
    {
        Form2 frm2 = new Form2()
        frm2.Show(this); //Assign the owner as current form
    }

}

现在,编写一些代码来调用Form1中的方法。创建IMyForm的对象,并从this.owner属性中分配值。

//Form2
private void button1_Click(object sender, EventArgs e)
{
    IMyForm frm = (IMyForm)this.owner;
    frm.ShowImage(new Bitmap(@"D:\myImage.jpg"));    
}

如果您不希望使用Form.Show(owner)方法,则可以通过Application.OpenForms[]表单集合在按钮单击事件中获取可用的表单对象。

IMyForm frm = (IMyForm)Application.OpenForms("Form1");
frm.ShowImage(new Bitmap(@"D:\myImage.jpg"));    

答案 1 :(得分:0)

以下是来自msdn的示例:

private Bitmap MyImage ;
public void ShowMyImage(String fileToDisplay, int xSize, int ySize)
{
   // Sets up an image object to be displayed. 
   if (MyImage != null)
   {
      MyImage.Dispose();
   }

   // Stretches the image to fit the pictureBox.
   pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage ;
   MyImage = new Bitmap(fileToDisplay);
   pictureBox1.ClientSize = new Size(xSize, ySize);
   pictureBox1.Image = (Image) MyImage ;
}

看起来您还需要为ClientSize属性提供值。

请参考这里: http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox(v=vs.110).aspx