如何更改运行时显示的图像?
我的代码如下:
<Image Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center">
<Image.Source>
<BitmapImage x:Name="Profile"
DecodePixelWidth="300"
DecodePixelHeight="300"
UriSource="/MyAssembly;component/Resources/Profile1.png" />
</Image.Source>
</Image>
我将要使用的图像基本上是艺术线条,因此使用Image元素直接创建这种缩略图是因为像素调整大小而无法使用。
我需要更改显示的图像,但更改UriSource
似乎没有做任何事情,如果我使用图像的来源,它似乎要求我取消整个图像。来源部分。
答案 0 :(得分:0)
我认为您的UriSource的这种格式可能会更好。
<Image Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center">
<Image.Source>
<BitmapImage x:Name="Profile"
DecodePixelWidth="300"
DecodePixelHeight="300"
UriSource="pack://application:,,,/MyAssembly;component/Resources/Profile1.png" />
</Image.Source>
</Image>
答案 1 :(得分:0)
使用IValueConverter
从路径字符串创建并返回ImageSource
。例如;您的图像(desert.jpeg,penguins.jpg)存在于根文件夹的Images文件夹中。确保为图像设置Build Action Type to Content, and Copy To Output Directory to Always
。
<local:UriToImgConverter x:Key="UriToImgCnvKey"/>
<Image x:Name="ImgCtrl" Source="{Binding Img, Mode=OneWay,Converter={StaticResource UriToImgCnvKey}}"/>
代码:
ImgViewModel vm1 = new ImgViewModel ( ) ;
ImgCtrl.DataContext = vm1;
vm1.Img = "Images/Desert.jpg";
ViewModel / Converter代码:
public class ImgViewModel:INotifyPropertyChanged
{
string _path ;
public string Img {
get { return _path; }
set { _path = value; OnPropertyChanged("Img"); }
}
public event PropertyChangedEventHandler PropertyChanged = delegate { };
public void OnPropertyChanged(string prop)
{
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
public class UriToImgConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
BitmapImage img = new BitmapImage(new Uri(value.ToString(), UriKind.Relative));
BitmapFrame frame = BitmapFrame.Create(img);
return frame;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}