我有一个显示目录的树和另一个显示文件的面板。现在显示的文件没有图标。我只知道文件的路径。我想做的是让该文件图标显示在该面板中。我需要输出和 Image.source。目前这就是我所拥有的
private ImageSource GetIcon(string filename)
{
System.Drawing.Icon extractedIcon = System.Drawing.Icon.ExtractAssociatedIcon(filename);
ImageSource imgs;
using (System.Drawing.Icon i = System.Drawing.Icon.FromHandle(extractedIcon.ToBitmap().GetHicon()))
{
imgs = Imaging.CreateBitmapSourceFromHIcon(
i.Handle,
new Int32Rect(0, 0, 16, 16),
BitmapSizeOptions.FromEmptyOptions());
}
return imgs;
从那里我调用我的 itme 并尝试更改其默认图标:
ImageSource i = GetIcon(f.fullname)
ic.image = i
ic
是列表的给定项,f.fullname 包含路径
这是图像的获取和设置
public BitmapImage Image
{
get { return (BitmapImage)img.Source; }
set { img.Source = value; }
}
它不起作用,这是我尝试过的许多方法之一,它说它不能转换不同的类型。有没有人有办法做到这一点?
我完全迷路了。
最佳答案
我假设 img
是一个标准的 Image
控件。
您的 Image
属性属于 BitmapImage
类型,它是一种特定的 ImageSource
。 CreateBitmapSourceFromHIcon
返回一个名为 InteropBitmap
的内部类的实例,无法将其转换为 BitmapImage
,从而导致错误。
您需要将属性更改为 ImageSource
(或 BitmapSource
,CreateBitmapSourceFromHIcon
返回并继承 ImageSource
), 就像这样:
public ImageSource Image
{
get { return img.Source; }
set { img.Source = value; }
}
关于c# - 从给定路径加载图标以显示在 WPF 窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2059469/