BitmapImage bitmapImage = image.Source as BitmapImage; 结果是null,为什么,该怎么做,image是image控件的name值
时间: 2024-02-20 18:58:45 浏览: 150
这是因为image控件的Source属性可能并不是BitmapImage类型。如果你确定它是BitmapImage类型,可以尝试强制类型转换来获取BitmapImage对象。代码如下:
```csharp
BitmapImage bitmapImage = (BitmapImage)image.Source;
```
如果强制类型转换失败,说明image控件的Source属性不是BitmapImage类型,你需要使用其他方法来获取图片信息。
相关问题
image控件的source是在前端赋值的,代码如下: <Image HorizontalAlignment="Left" Margin="20 0 0 0" VerticalAlignment="Center" x:Name="img" Stretch="Uniform" Width="50" Height="50" Source="sview_icon.png" /> 现在我想在后台将source转为bitmapimage,但是用下面的方法得到的是null: BitmapImage bitmapImage = image.Source as BitmapImage; 我还能通过什么方法来转换,请给出详细代码
对于通过前端直接设置 Source 属性的 Image 控件,可以使用以下代码将其转换为 BitmapImage 对象:
```csharp
// 获取 Image 控件的 Source 属性
var source = img.Source;
// 如果 Image 控件的 Source 属性为 null 则无法转换为 BitmapImage 对象
if (source == null)
{
return;
}
// 创建 BitmapImage 对象并将 Image 控件的 Source 属性赋值给它
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.UriSource = new Uri(source.ToString());
bitmapImage.EndInit();
// 现在 bitmapImage 对象就是 Image 控件的源图像了,可以使用它进行进一步的处理
```
这里我们首先获取了 Image 控件的 Source 属性,然后将其转换为字符串类型,并将其作为 UriSource 赋值给新创建的 BitmapImage 对象。需要注意的是,在将字符串转换为 UriSource 时,可能需要使用 `pack://application:,,,/` 前缀指定应用程序中的资源。如果你的图像资源不是应用程序资源,则需要使用正确的路径。
阅读全文