WPF ImageSource 转 Bitmap
时间: 2024-10-01 14:05:16 浏览: 37
WPF设置图片Source时不占用图片的方法
4星 · 用户满意度95%
在WPF中,`ImageSource` 是用于表示图片数据的对象,它可以包含各种类型的图像内容,如Uri、Stream、BitmapSource等。如果你有一个 `ImageSource` 对象,想要将其转换为 `Bitmap` 对象(System.Drawing.Bitmap),可以按照以下步骤操作:
1. 首先,确保你的 `ImageSource` 可以从.NET Framework库中获取到具体的 `BitmapSource` 类型,例如 `BitmapImage` 或 `WriteableBitmap`。
```csharp
var bitmapSource = (BitmapSource)imageSource;
```
2. 如果是 `BitmapImage`,你可以创建一个新的 `Bitmap` 通过它的 `PixelData` 属性,这将是一个 `byte[]`,然后加载到 `Bitmap` 中。
```csharp
using (var stream = new MemoryStream())
{
bitmapSource.Save(stream, System.Windows.Media.Imaging.PngFormat.Png);
var pixelData = stream.ToArray();
using (var bitmap = new Bitmap(pixelData.Length, PixelFormat.Format32bppArgb))
{
bitmap.SetPixels(pixelData);
// 现在你可以使用 bitmap 对象了
}
}
```
3. 如果是 `WriteableBitmap`,它本身就包含了可以直接操作的像素数据,所以不需要额外转换。
```csharp
using (var bitmap = new Bitmap(bitmapSource.Width, bitmapSource.Height))
{
bitmap.CopyPixels(bitmapSource.GetPixels(), 0, 0, bitmapSource.Width, bitmapSource.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
// 现在你可以使用 bitmap 对象了
}
```
阅读全文