2012-05-18 69 views
3

我有一个项目它的名字是'xx'。 我创建一个文件夹“图像”有这样的路径: XX \ BIN \调试\图像\图片来源UriKind

图像只包含一张照片它的名字是“1.JPG” 的主窗口包含图像控制; 我设置的代码加载图像源,但它不能正常工作,为什么?:

private void Image_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    Image i = sender as Image; ; 
    BitmapImage b = new BitmapImage(new Uri(@"images\1.jpg",UriKind.Relative)); 
    i.Source=b; 
} 

我怎样才能通过加载代码的图片来源? 感谢提前:)

回答

2

您需要在images文件夹和1.jpgset the Properties添加1.jpg到您的项目资源。要加载资源,请使用packURI约定。

private void Image_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    Image i = sender as Image; ; 
    BitmapImage b = new BitmapImage(new Uri(@"pack://application:,,,/" 
     + Assembly.GetExecutingAssembly().GetName().Name 
     + ";component/" 
     + "Images/1.jpg", UriKind.Absolute)); 
    i.Source=b; 
} 
+0

我加入这个文件夹和1.JPG它manualy从窗口探险家,不是从我的项目 – user983195

+1

最佳实践的解决方案是将其添加到您的项目,并设置* *总是复制**。这样它总是会被复制到输出(调试/释放)文件夹,并将由源代码管理进行管理。 – SliverNinja

+0

System.Windows.Controls.Image不包含静态方法(FromFile) 请注意:我的项目是wpf项目 – user983195

0

试试这个

public void Image_MouseDown(object sender, RoutedEventArgs e) 
{ 
    OpenFileDialog dlg = new OpenFileDialog(); 
    dlg.InitialDirectory = "c:\\"; 
    dlg.Filter = "Image files (*.jpg)|*.jpg|All Files (*.*)|*.*"; 
    dlg.RestoreDirectory = true; 
    Nullable<bool> result = dlg.ShowDialog();       

    if (result == true) 
    { 
     BitmapImage bitmap = new BitmapImage(); 
     Image img = sender as Image; 
     bitmap.BeginInit(); 
     bitmap.UriSource = new Uri(dlg.FileName); 
     bitmap.EndInit(); 
     img.Source = bitmap; 
    } 
}