Visualizzazione post con etichetta Bitmap. Mostra tutti i post
Visualizzazione post con etichetta Bitmap. Mostra tutti i post

mercoledì 16 ottobre 2013

Concatenare immagini Bitmap C#

Ecco un esempio di codice per concatenare tra loro 2 o più immagini:


Code:
//Concatenate Image in Horizontal
private Bitmap ConcatenateImage(IList<Bitmap> ListImage)
{
 int ImWidth = 0;

 for (int i = 0; i < ListImage.Count(); i++)
 {
  ImWidth = ImWidth + ListImage[i].Width;
 }

 Bitmap bmpfinal = new Bitmap(ImWidth, ListImage[0].Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

 Graphics gr = Graphics.FromImage(bmpfinal);

 gr.DrawImage(ListImage[0], new System.DrawingPoint(0, 0));
 for (int i = 1; i < ListImage.Count(); i++)
 {
  gr.DrawImage(ListImage[i], new System.DrawingPoint(ListImage[i - 1].Width, 0));
 }

 gr.Dispose();
 
 return bmpfinal;
}<!--[if IE]>

Convertire immagini Bitmap in ImageSource

Il seguente codice converte un immagine in formato Bitmap in formato ImageSource:



Code:
//Convert Bitmap to ImageSource
public ImageSource ToImageSource(System.DrawingBitmap source)
{
 BitmapSource bitSrc = null;

 var hBitmap = source.GetHbitmap();

 try
 {
  bitSrc = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
   hBitmap,
   IntPtr.Zero,
   Int32Rect.Empty,
   BitmapSizeOptions.FromEmptyOptions());
 }
 catch
 {
  bitSrc = null;
 }
 finally
 {
  NativeMethods.DeleteObject(hBitmap);
 }

 return bitSrc;
}

//Class Utility
internal static class NativeMethods
{
 [DllImport("gdi32.dll")]
 [return: MarshalAs(UnmanagedType.Bool)]
 internal static extern bool DeleteObject(IntPtr hObject);
}

Cosa molto importante è la cancellazione dell'oggetto tramite la classe "NativeMethods" altrimenti potreste avere problemi di memoria.