C# OpenFileDialog,WPF的Image控件使用

2020-06-06  本文已影响0人  Trytodo_zbs

需求

想做一个打开文件选择框,选择图片之后显示在软件界面的功能

1)打开文件选择框

网上一查基本上就知道使用OpenFileDialog

//需要添加引用
using System.Windows.Forms;
//如果有IO文件操作
using System.IO;
OpenFileDialog dialog = new OpenFileDialog(){
  InitialDirectory = @"C:\Users\pc\Desktop",//设置文件打开初始目录为桌面
  Title = "请选择图片",//设置打开文件对话框标题
  Filter = "图片文件(*.jpg,*.gif,*.bmp,*.png)|*.jpg;*.gif;*.bmp;*.png",//设置文件过滤类型
  RestoreDirectory = true //设置对话框是否记忆之前打开的目录
}
//这里的DialogResult最好加前缀System.Windows.Forms.不然可能会报错
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)//当点击文件对话框的确定按钮时打开相应的文件
{
  //将选中的文件的路径传递给相应控件比如Image,PictureBox
}

这里一定要注意System.Windows.Forms的引用很有可能会没有这个时候需要在vs studio中添加
项目(P) → 添加引用(R) → 浏览(B)
找到对应的文件目录,选择对应的版本的net framework,一般路径是在

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework

该文件夹下有各个版本Framework文件夹,选中里面的相应dll文件,点击确定

2)将返回的路径赋值给控件

搜索OpenFileDialog网上给的例子都是使用的PictureBox

//添加引用
//该引用可能也会提示不存在报错,也需要使用上面添加System.Windows.Forms的方式添加一下
using System.Drawing;
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)//当点击文件对话框的确定按钮时打开相应的文件
{
  //将选中的文件的路径传递给相应控件比如Image,PictureBox
  PictureBox.Image = Image.FromFile(dialog.FileName);
}

使用PictureBox有一个问题,我创建的是WPF窗口应用,直接使用PictureBox会报错,怎么解决这个问题我暂时没有研究,你们有需要的可以自己取查一查资料

而我就想试试使用Image控件...
首先试着直接赋值

<Image
  Width="190" 
  Height="190"
  x:Name="FileShow"
  Stretch="UniformToFill">
</Image>
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)//当点击文件对话框的确定按钮时打开相应的文件
{
  //将选中的文件的路径传递给相应控件比如Image,PictureBox
  FileShow.Source= dialog.FileName;
}

然后报错,不能将string类型数据直接赋值给Source对象
根据提示这是个System.Windows.Media.ImageSource类型数据

查找这个数据类型讲了一堆
最后百度知道里给的答案:百度知道

if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)//当点击文件对话框的确定按钮时打开相应的文件
{
  //将选中的文件的路径传递给相应控件比如Image,PictureBox
  FileShow.Source= new BitmapImage(new Uri(dialog.FileName));
}

成功

上一篇下一篇

猜你喜欢

热点阅读