如何在WPF应用程序中加载和显示图像?
时间: 2024-10-28 20:11:35 浏览: 48
在WPF应用程序中使用GDI +代码进行无损JPEG图像旋转
在Windows Presentation Foundation (WPF) 应用程序中,加载和显示图像通常通过`Image`控件完成。以下是简单的步骤:
1. **添加图片资源**:
- 将图片文件(如.jpg、png等)放入项目中的`Resources`文件夹,或者使用相对路径将图片放在应用程序的某个目录下。
- 对于XAML文件,可以在`<ResourceDictionary>`标签内添加`BitmapSource`类型的资源声明,例如:
```xml
<ResourceDictionary>
<BitmapImage x:Key="MyImage" UriSource="/Images/MyImage.png"/>
</ResourceDictionary>
```
2. **在XAML中使用Image控件**:
在需要显示图像的地方,使用`Image`元素,并设置其`Source`属性引用之前创建的资源,例如:
```xml
<Image Source="{StaticResource MyImage}" Height="100" Width="100"/>
```
3. **动态加载图片**:
如果想在运行时动态加载图片,可以使用`Uri`对象和`Image.Source`:
```xml
<Image Source="{Binding ImageUri}" Stretch="UniformToFill"/>
```
然后在代码背后,你可以设置`ImageUri`绑定到一个包含`Uri`的对象。
4. **处理异步加载**:
对于大尺寸或网络图片,可能需要使用`ImageBrush`和`ImageSourceConverter`实现异步加载:
```xml
<Image Stretch="Fill">
<Image.Style>
<Style TargetType="Image">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Image">
<Grid>
<ContentPresenter/>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding IsLoaded, ElementName=image}"
Value="False">
<Setter TargetName="image"
Property="Source"
Value="{x:Null}"/>
<Setter TargetName="image"
Property="Visibility"
Value="Collapsed"/>
<!-- 异步加载代码 -->
<EventSetter Event="Loaded" Handler="OnImageLoaded"/>
</DataTrigger>
</ControlTemplate.Triggers>
</Setter.Value>
</Setter>
</Style>
</Setter>
</Image>
```
使用`OnImageLoaded`方法处理图片加载完成后的逻辑。
阅读全文