如何在C#后面的代码中显示PictureBox

我知道我的问题听起来很基本,但我搜遍了整个地方,什么都没找到……这是我的代码:

public MainWindow() { InitializeComponent(); Map newMap = new Map(); newMap.setMapStrategy(new SmallMapStrategy()); newMap.createMap(); System.Windows.Forms.PictureBox pictureBox1 = new System.Windows.Forms.PictureBox(); pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(newMap.grid[3].afficher); } 

这是一个function:

 public override void afficher(object sender, PaintEventArgs e) { e.Graphics.DrawImage(squareImage, pos_x, pos_y, 50, 50); } 

squareImage是与Drawing.Image对应的属性。 pos_x和pos_y是自定义int32属性。

我想要的是在运行我的应用程序时看到图像…

由于您使用的PictureBox是Winforms控件,因此您需要将WindowsFormsHost控件添加到Wpf窗体并将PictureBox添加到其中。 无论何时动态创建控件,都需要将其添加到Form或Container对象中,否则将无法显示。

即这样的事情。

MainWindow.xaml

      

MainWindow.xaml.cs

 namespace WpfApplication1 { ///  /// Interaction logic for MainWindow.xaml ///  public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); System.Windows.Forms.PictureBox picturebox1 = new System.Windows.Forms.PictureBox(); windowsFormsHost1.Child = picturebox1; picturebox1.Paint += new System.Windows.Forms.PaintEventHandler(picturebox1_Paint); } void picturebox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(@"C:\Temp\test.jpg"); System.Drawing.Point ulPoint = new System.Drawing.Point(0, 0); e.Graphics.DrawImage(bmp,ulPoint); } } }