C# Convert Bit地图Frame to Icon and Vice Versa

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);
    }