0

在对话框窗口的代码隐藏中,我根据应用程序的字体大小选择图标大小,方法如下:

double iconSize = 24;
if (Session.FontSize <= 16)
  iconSize = 48;
else if (Session.FontSize >= 28)
  iconSize = 72;

Uri uri = new Uri("pack://application:,,,/MyApp;component/Resources/
                                               Status-dialog-information.ico");
BitmapDecoder decoder = BitmapDecoder.Create(uri, 
                                          BitmapCreateOptions.DelayCreation,
                                          BitmapCacheOption.Default);
BitmapSource bms = decoder.Frames.
                   Where(f => f.Width == iconSize).FirstOrDefault(); 
imageControl.Source = bms;

,其中 imageControl 是图像控件。我使用 Oxygen 中的图标(在 iconarchive.com 中找到)

现在,上面的代码适用于一些图标,没有问题。但是对于其他一些图标文件,例如上面的,它只在我第一次创建我的对话框窗口时起作用。第二次创建对话框窗口 BitmapDecoder.Create() 方法抛出 System.IO.FileFormatException -“图像格式无法识别”。请建议如何解决它。

4

1 回答 1

0

可能很难回答,没有更多细节。我刚刚创建了静态字段来初始化一次。

于 2012-11-14T06:29:31.313 回答