WPF Image控件 Source: Byte[] ,BitmapImage 相互转换
时间: 2023-12-31 16:06:16 浏览: 32
可以使用以下代码将 WPF Image 控件的 Source 属性设置为 Byte[]:
```csharp
byte[] imageData = // 图片的二进制数据
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = new MemoryStream(imageData);
bitmap.EndInit();
imageControl.Source = bitmap;
```
反过来,可以使用以下代码将 BitmapImage 转换为 Byte[]:
```csharp
BitmapImage bitmap = // 图片的 BitmapImage
byte[] imageData;
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmap));
using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
imageData = ms.ToArray();
}
```
注意,在将 BitmapImage 转换为 Byte[] 时,需要使用合适的编码器,例如上面的代码使用了 JpegBitmapEncoder。
相关问题
c# wpf image控件 Source属性转BitmapImage
可以使用以下代码将 WPF Image 控件的 Source 属性(通常是一个图片文件的路径)转换为 BitmapImage 对象:
```csharp
string imagePath = // 图片文件的路径
BitmapImage bitmap = new BitmapImage(new Uri(imagePath));
```
上述代码中,`BitmapImage` 的构造函数接受一个 `Uri` 对象,表示图片文件的路径。构造函数会自动加载图片并创建一个 `BitmapImage` 对象。
如果需要将 `Image` 控件的 `Source` 属性转换为 `BitmapImage`,可以使用以下代码:
```csharp
Image imageControl = // Image 控件对象
BitmapImage bitmap = imageControl.Source as BitmapImage;
```
上述代码中,`as` 关键字将 `Source` 属性转换为 `BitmapImage` 对象,如果 `Source` 属性不是 `BitmapImage` 对象,则返回 `null`。
WPF image控件填充
WPF中的Image控件可以通过Stretch属性来控制图片的填充方式。Stretch属性有以下几个可选值:
- None:不拉伸图片,使用原始大小
- Fill:拉伸图片以填充整个控件,可能会导致图片变形
- Uniform:按比例缩放图片以适应控件大小,并保持图片的纵横比。如果图片太小,可能会出现空白区域
- UniformToFill:按比例缩放图片以填充整个控件,并保持图片的纵横比。如果图片太小,可能会被裁剪
以下是一个示例代码,展示如何设置Image控件的Stretch属性:
```xaml
<Image Source="image.jpg" Stretch="Uniform"/>
```
在上述示例中,图片将按比例缩放以适应控件大小,并保持图片的纵横比。如果图片太小,可能会出现空白区域。