在WPF中更改BitMapImage的尺寸,以及可以在<Image>元素中放置哪种对象?

Dbl*_*oom 3 c# wpf treeview bitmapimage

我正在尝试使用TreeView元素创建一个资源管理器应用程序,并为树的每个级别提供不同的图标,并按照以下文章进行操作:http://www.codeproject.com/Articles/21248/A-Simple-WPF-Explorer -树

这一切都很好,除了我想要有不同大小的图标.

XAML的Image元素在这里:

<Image Name="img"
       Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
       AncestorType={x:Type TreeViewItem}},
       Path=Header,
       Converter={x:Static local:HeaderToImageConverter.Instance}}"
/>
Run Code Online (Sandbox Code Playgroud)

决定返回哪个图标的代码片段在这里:

if ((value as string).Contains(@"\""))
{
    Uri uri = new Uri ("pack://application:,,,/Images/DeployWiz_Network.png");
    BitmapImage source = new BitmapImage(uri);

    return source;
}
Run Code Online (Sandbox Code Playgroud)

如何更改返回图像的尺寸?更改bitmapimage对象的尺寸似乎不起作用.我可以返回哪些其他图像对象作为源?

Dbl*_*oom 13

好的,我想出了我的问题.Jeez,真是个假人.下面是我改变的代码,它让我获得了我想要的结果:

Uri uri = new Uri("pack://application:,,,/Images/DeployWiz_Network.png");
BitmapImage source = new BitmapImage();
source.BeginInit();
source.UriSource = uri;
source.DecodePixelHeight = 10;
source.DecodePixelWidth = 10;
source.EndInit();

return source;
Run Code Online (Sandbox Code Playgroud)

  • 你不应该同时设置`DecodePixelWidth`和`DecodePixelHeight`,因为这可能会破坏图像的宽高比. (5认同)
  • 较新版本的`BitmapImage`不再具有`BeginInit()`和`EndInit()`. (2认同)