日期:2014-05-18  浏览次数:21171 次

C# Convert BitmapFrame to Icon and Vice Versa

In the transition from Winform era to the Wpf era. Different type of image classes are used for icons, buttons images and etc....

?

The pre-world uses the Icon class (System.Drawing), while the newer wpf will uses ImageSource, more specifically, ImageSource's concrete derived classes such as BigmapFrame or BitmapImage (System.Windows.Media.Imaging);

?

?

Below shows the code that helps you to convert from BitmapFrame to Icon

?

?

private static Icon ConvertFromBitmapFrame(BitmapFrame bitmapFrame)
    {
      Debug.Assert(bitmapFrame != null);

      var ms = new MemoryStream();
      var encoder = new PngBitmapEncoder();
      encoder.Frames.Add(bitmapFrame);
      encoder.Save(ms);
      ms.Seek(0, SeekOrigin.Begin);
      var bmp = new Bitmap(ms);
      return Icon.FromHandle(bmp.GetHicon());
    }

?

?

and below shows code to convert from Icon to ImageSource.?

?

?

    private BitmapFrame ConvertFromIcon(Icon icon)
    {
      var memoryStream = new MemoryStream();
      icon.Save(memoryStream);
      memoryStream.Seek(0, SeekOrigin.Begin);
      return BitmapFrame.Create(memoryStream);
    }
?

?

?