如何在运行时加载图像到WPF?
经过一番search,似乎将运行时加载到WPF窗口是相当复杂的!
Image image; image = new Uri("Bilder/sas.png", UriKind.Relative); ????.Source = new BitmapImage(image); 我正在尝试此代码,但我需要一些帮助才能使其工作。 我在代码下面看到一些红线! 我也想知道是否需要在XAML代码中添加一些额外的代码,或者是足够的:
  <Image Height="200" HorizontalAlignment="Left" Margin="12,12,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="350" /> 
不知道因为我已经看到XAML标签内的图像的例子。
编辑:
我正在使用这个知道:
  var uri = new Uri("pack://application:,,,/sas.png"); var bitmap = new BitmapImage(uri); image1.Source = bitmap; 
XAML:
  <Grid Width="374"> <Image Height="200" HorizontalAlignment="Left" Margin="12,12,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="350" /> <Button Content="Start" Height="23" HorizontalAlignment="Left" Margin="12,226,0,0" Name="btnStart" VerticalAlignment="Top" Width="75" /> <Button Content="Land" Height="23" HorizontalAlignment="Left" Margin="287,226,0,0" Name="btnLand" VerticalAlignment="Top" Width="75" /> <ComboBox Height="23" HorizontalAlignment="Left" Margin="110,226,0,0" Name="cmbChangeRoute" VerticalAlignment="Top" Width="156" /> </Grid> 
编辑2:我的答案是“解决”,但与外面堆栈溢出索姆帮助。 此代码正常工作:
  BitmapImage image = new BitmapImage(); image.BeginInit(); image.UriSource = new Uri("pack://application:,,,/Resources/" + company + ".png"); image.EndInit(); image2.Source = image; 
	
在WPF中,图像通常是从Stream或Uri加载的。
BitmapImage支持两者,Uri甚至可以作为构造函数parameter passing:
 var uri = new Uri("http://..."); var bitmap = new BitmapImage(uri); 
 如果图像文件位于本地文件夹中,则必须使用file:// Uri。 你可以像这样创build一个这样的Uri: 
 var path = Path.Combine(Environment.CurrentDirectory, "Bilder", "sas.png"); var uri = new Uri(path); 
如果图像文件是程序集中的资源,则Uri必须遵循Pack Urischeme:
 var uri = new Uri("pack://application:,,,/Bilder/sas.png"); 
 在这种情况下, sas.png的Visual Studio Build Action必须是Resource 。 
 一旦你创build了一个BitmapImage并且像这个XAML一样拥有一个Image控件 
 <Image Name="image1" /> 
 您只需将BitmapImage分配给该Image控件的Source属性即可: 
 image1.Source = bitmap; 
 确保您的sas.png被标记为Build Action: Content并Copy To Output Directory: Copy Always在其Visual Studio Properties Copy To Output Directory: Copy Always … 
我认为C#源代码是这样的…
  Image image = new Image(); image.Source = (new ImageSourceConverter()).ConvertFromString("pack://application:,,,/Bilder/sas.png") as ImageSource; 
和XAML应该是
  <Image Height="200" HorizontalAlignment="Left" Margin="12,12,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Source="../Bilder/sas.png" Width="350" /> 
编辑
dynamic地我认为XAML将提供加载图像的最佳方式…
  <Image Source="{Binding Converter={StaticResource MyImageSourceConverter}}" x:Name="MyImage"/> 
  image.DataContext是stringpath。 
  MyImage.DataContext = "pack://application:,,,/Bilder/sas.png"; public class MyImageSourceConverter : IValueConverter { public object Convert(object value_, Type targetType_, object parameter_, System.Globalization.CultureInfo culture_) { return (new ImageSourceConverter()).ConvertFromString (value.ToString()); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 
 现在,当您设置不同的数据上下文时, Image将在运行时自动加载。 
- 什么是你遇到过的最糟糕的现实世界的macros/预处理器的滥用?
- 任何人都有架构跨平台WP7 Android iOS移动开发(monotouch,monodroid,C#)的经验。
- AssemblyInfo版本信息星号
- 多余的演员是否得到优化?
- 如何在debugging期间在ASP.NET(C#)中使用Console.WriteLine?
- int a = {1,2,}; 允许使用奇怪的逗号。 任何特定的原因?
- 在初始化“float”时,转换为“float”并添加“f”作为后缀,有什么区别?
- C ++中main的签名参数是否具有unsiged和const限定符?
- 打开文件对话框,并使用WPF控件和C#select一个文件