Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 图像。WPF的位置变量?_C#_.net_Wpf_Winforms_Image - Fatal编程技术网

C# 图像。WPF的位置变量?

C# 图像。WPF的位置变量?,c#,.net,wpf,winforms,image,C#,.net,Wpf,Winforms,Image,说到WPF,我是个笨蛋;在win表单中,我可以执行以下操作: public void blah() { using( var o = new OpenFileDialog()) { if(o.ShowDialog() == DialogResult.OK) { PictureBox p = new PictureBox(); p.ImageLocation = o.FileName;

说到WPF,我是个笨蛋;在win表单中,我可以执行以下操作:

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也不会给我任何关于如何在运行时将pic插入表单的清晰信息!有人能帮忙吗


非常感谢

基本上,您需要创建System.Windows.Controls.Image并将其源设置为System.Windows.Media.Imaging.BitmapImage。然后将图像添加到容器的子级。您可能希望先将图像放入另一个容器中,就像画布一样。下面是代码的快速翻译,但您可能需要稍微使用一下,以获得正确的代码

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);
        }
   }
}

可以使用XAML和一些绑定,也可以使用转换器将字符串转换为图像源。这更符合WPF的做事方式

不带转换器的示例:

XAML

代码隐藏

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)));
            }
        }
    }
}

这里有一个更简单的方法

 Image.Source = new BitmapImage(new Uri("C:\MyImage.jpg");

如果您对sizemode属性有意见,是的,我的大脑有一段时间没有反应,我忘记了更改大小模式的正确方法。lol。感谢您的回答:,将更新我的问题以显示正确的sizemode代码,这样人们就不会使用错误的版本:
 Image.Source = new BitmapImage(new Uri("C:\MyImage.jpg");