对于WPF,我是一个菜鸟;在获胜形式中,我可以这样做:
public void blah()
{
using( var o = new OpenFileDialog())
{
if(o.ShowDialog() == DialogResult.OK)
{
PictureBox p = new PictureBox();
p.ImageLocation = o.FileName;
p.AutoSize = SizeMode.AutoSize;
this.Controls.Add(p);
}
}
}
但是在WPF中我根本不知道,甚至MSDN都不会给我任何关于如何在运行时将图片插入到表单上的明确信息!有人可以帮忙吗?
非常感谢
答案 0 :(得分:0)
基本上,您需要创建System.Windows.Controls.Image
并将其Source
设置为System.Windows.Media.Imaging.BitmapImage
。然后将图像添加到Container的Children
。您可能希望将图像放在另一个容器中,就像Canvas一样。这是您的代码的快速翻译,但您可能需要稍微使用它才能使其正确。
public void blah()
{
using( var o = new OpenFileDialog())
{
if(o.ShowDialog() == DialogResult.OK)
{
Image i = new Image();
i.Source = new BitmapImage(o.FileName);
//p.AutoSize = SizeMode.AutoSize; <= not sure about this part.
this.Children.Add(i);
}
}
}
答案 1 :(得分:0)
您可以使用XAML和一些绑定(可能还有转换器将字符串转换为图像源)。它更符合WPF的做事方式。
没有转换器的示例:
XAML
<Window
...
x:Name="this"
DataContext="{Binding ElementName=this}">
<Grid>
<ListView ItemsSource="{Binding MyImageCollection}">
<ListView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</Window>
背后的代码
public class Window1 : Window {
public ObservableCollection<ImageSource> MyImageCollection { get; set; }
...
public void blah()
{
using( var o = new OpenFileDialog())
{
if(o.ShowDialog() == DialogResult.OK)
{
MyImageCollection.Add(new BitmapImage(new Uri(o.FileName)));
}
}
}
}
答案 2 :(得分:0)
这是一种更简单的方法。
Image.Source = new BitmapImage(new Uri("C:\MyImage.jpg");