2011-10-04 80 views
0

我试图从bmp文件加载BitmapImage。 当我加载PNG或JPG =>此代码工作没有问题。 但是,当我试图加载BMP文件 - 我得到例外。无法从位图加载BitmapImage(附带代码)

异常信息:灾难性故障(从HRESULT异常:0x8000FFFF(E_UNEXPECTED))

代码:

 OpenFileDialog dialog = new OpenFileDialog() 
     { 
      Multiselect = false, 
      Filter = "Image(*.png; *.jpg; *.bmp;)| *.png; *.jpg; *.bmp;" 
     }; 

     if(dialog.ShowDialog() == true) 
     { 
      using(System.IO.Stream stream = dialog.File.OpenRead()) 
      { 
       byte[] img = new byte[ stream.Length ]; 
       stream.Read(img , 0, img .Length); 

       BitmapImage image = new BitmapImage(); 
       image.SetSource(stream);    // Here i have the exception 
       itemImage.Source = image; 
      } 
     } 

回答

2

Silverlight不支持Windows位图(BMP)格式。只有JPG和PNG。 名称BitmapImage的使用引用通用位图术语而不是特定的文件格式。

JPG是用于拍摄图像的最佳格式,PNG是其他图像的最佳格式,因为它具有半体面的alpha通道支持(不像位图和GIF)。

要加载位图文件(假设你真的需要)有库。