How to Load a WPF BitmapImage from a System.Drawing.Bitmap in C#

To load a WPF BitmapImage from a System.Drawing.Bitmap in C#, you need to perform a few steps. First, save the System.Drawing.Bitmap to a memory stream in a compatible format (e.g., PNG or BMP). Then, use the memory stream to create a WPF BitmapImage.

Here's an example of how to do this:

  • Add the following using statements:
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Media.Imaging;
  • Create a method to convert a System.Drawing.Bitmap to a WPF BitmapImage:
public static BitmapImage BitmapToBitmapImage(Bitmap bitmap)
{
    using (MemoryStream memoryStream = new MemoryStream())
    {
        // Save the System.Drawing.Bitmap to the memory stream in a compatible format (e.g., PNG)
        bitmap.Save(memoryStream, ImageFormat.Png);

        // Create a new WPF BitmapImage
        BitmapImage bitmapImage = new BitmapImage();
        bitmapImage.BeginInit();
        bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
        bitmapImage.StreamSource = memoryStream;
        bitmapImage.EndInit();
        bitmapImage.Freeze(); // Optional: This makes the BitmapImage usable on non-UI threads

        return bitmapImage;
    }
}
  • Use the method to convert a System.Drawing.Bitmap to a WPF BitmapImage:
// Create a sample System.Drawing.Bitmap
Bitmap sampleBitmap = new Bitmap(100, 100);
using (Graphics g = Graphics.FromImage(sampleBitmap))
{
    g.Clear(Color.Red);
}

// Convert the System.Drawing.Bitmap to a WPF BitmapImage
BitmapImage bitmapImage = BitmapToBitmapImage(sampleBitmap);

Now you have a WPF BitmapImage that you can use in your WPF application, for example, as the Source for an Image control.

Note that this example uses the System.Drawing namespace, which is part of the GDI+ based System.Drawing.dll. In .NET Core and .NET 5+, you can use the System.Drawing.Common NuGet package to access the System.Drawing namespace.

  1. Load WPF BitmapImage from System.Drawing.Bitmap C#:

    • Loading a WPF BitmapImage from a System.Drawing.Bitmap in C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      
  2. Convert System.Drawing.Bitmap to BitmapImage in WPF C#:

    • Converting a System.Drawing.Bitmap to a BitmapImage in WPF using C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      
  3. C# WPF display System.Drawing.Bitmap in Image control:

    • Displaying a System.Drawing.Bitmap in a WPF Image control using C#.
    • XAML:
      <Image Name="imageControl" />
      
    • Code-behind:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      imageControl.Source = wpfBitmap;
      
  4. Convert GDI Bitmap to WPF BitmapImage C#:

    • Conversion of a GDI Bitmap to a WPF BitmapImage in C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      
  5. Loading System.Drawing.Bitmap into WPF Image in C#:

    • Loading a System.Drawing.Bitmap into a WPF Image control using C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      imageControl.Source = wpfBitmap;
      
  6. Convert Bitmap to BitmapImage in WPF C#:

    • Converting a Bitmap to a BitmapImage in WPF using C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      
  7. C# WPF load System.Drawing.Bitmap into Image control:

    • Loading a System.Drawing.Bitmap into a WPF Image control using C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      imageControl.Source = wpfBitmap;
      
  8. Using BitmapImage with System.Drawing.Bitmap in C#:

    • Using a BitmapImage with a System.Drawing.Bitmap in C# for WPF.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      
  9. WPF Image control set source from System.Drawing.Bitmap C#:

    • Setting the source of a WPF Image control from a System.Drawing.Bitmap in C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      imageControl.Source = wpfBitmap;
      
  10. C# WPF convert GDI Bitmap to WPF ImageSource:

    • Converting a GDI Bitmap to a WPF ImageSource in C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      ImageSource wpfImageSource = ConvertToImageSource(gdiBitmap);
      
  11. WPF BitmapImage from System.Drawing.Bitmap example:

    • Example of creating a WPF BitmapImage from a System.Drawing.Bitmap in C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      
  12. C# WPF display System.Drawing.Bitmap in ImageBrush:

    • Displaying a System.Drawing.Bitmap in a WPF ImageBrush using C#.
    • XAML:
      <Rectangle>
          <Rectangle.Fill>
              <ImageBrush ImageSource="{Binding Source={x:Static local:YourBitmapClass.Bitmap}}" />
          </Rectangle.Fill>
      </Rectangle>
      
  13. Convert GDI Bitmap to WPF ImageSource C#:

    • Conversion of a GDI Bitmap to a WPF ImageSource in C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      ImageSource wpfImageSource = ConvertToImageSource(gdiBitmap);
      
  14. Loading System.Drawing.Bitmap into WPF ImageBrush in C#:

    • Loading a System.Drawing.Bitmap into a WPF ImageBrush using C#.
    • XAML:
      <Rectangle>
          <Rectangle.Fill>
              <ImageBrush ImageSource="{Binding Source={x:Static local:YourBitmapClass.Bitmap}}" />
          </Rectangle.Fill>
      </Rectangle>
      
  15. C# WPF convert System.Drawing.Bitmap to ImageSource:

    • Converting a System.Drawing.Bitmap to a WPF ImageSource in C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      ImageSource wpfImageSource = ConvertToImageSource(gdiBitmap);
      
  16. Use System.Windows.Media.Imaging.BitmapImage with System.Drawing.Bitmap C#:

    • Using System.Windows.Media.Imaging.BitmapImage with a System.Drawing.Bitmap in C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      
  17. C# WPF load System.Drawing.Bitmap into ImageSource:

    • Loading a System.Drawing.Bitmap into a WPF ImageSource using C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      ImageSource wpfImageSource = ConvertToImageSource(gdiBitmap);
      
  18. Convert System.Drawing.Image to WPF BitmapImage C#:

    • Converting a System.Drawing.Image to a WPF BitmapImage in C#.
    • Code snippet:
      System.Drawing.Image gdiImage = GetGdiImage(); // Replace with actual GDI Image
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiImage);
      
  19. Loading GDI Bitmap into WPF Image control C#:

    • Loading a GDI Bitmap into a WPF Image control using C#.
    • Code snippet:
      System.Drawing.Bitmap gdiBitmap = GetGdiBitmap(); // Replace with actual GDI Bitmap
      BitmapImage wpfBitmap = ConvertToBitmapImage(gdiBitmap);
      imageControl.Source = wpfBitmap;
      
  20. C# WPF display System.Drawing.Bitmap in XAML Image:

    • Displaying a System.Drawing.Bitmap in a WPF Image control using XAML and C#.
    • XAML:
      <Image Source="{Binding Source={x:Static local:YourBitmapClass.Bitmap}}" />