I found some code I used to create Pixbufs from RGB
System.Drawing.Bitmap objects:

public Gdk.Pixbuf CreateFromResource(Bitmap bitmap)
{
  BitmapData data = bitmap.LockBits(new Rectangle(0, 0,
                                                  bitmap.Width, bitmap.Height,
                                                  PixelFormat.Format24bppRgb);
  IntPtr scan = data.Scan0;
  int size = bitmap.Width * bitmap.Height * 3;
  byte[] bdata = new byte[size];
  Gdk.Pixbuf pixbuf = null;

  unsafe {
    byte* p = (byte*)scan;
    for(int i = 0; i < size; i++)
      bdata[i] = p[i];
  }

  pixbuf = new Gdk.Pixbuf(bdata, false, 8,
                          bitmap.Width, bitmap.Height,
                          data.Stride, null);
  bitmap.UnlockBits(data);
  return pixbuf;
}

On Thu, 2008-08-07 at 21:55 -0700, egrath wrote:
> Hello,
> 
> can someone please tell me what's the current way of getting a Gdk.Pixbuf
> from an byte[] full of RGB Values? I know that there is an overload of the
> Gdk.Pixbuf constructor which would normally accomplish this, but according
> to my tests and Bug ID 362951 it seems to be broken in 2.0 Preview.
> 
> I use the following statement:
> 
> Gdk.Pixbuf picture = new Gdk.Pixbuf( m_RawData, Gdk.Colorspace.Rgb, false,
> 8, m_RawResolution.Width, m_RawResolution.Height, m_RawResolution.Width * 3,
> null );
> 
> and get the following exception:
> 
> Unhandled Exception: System.InvalidProgramException: Invalid IL code in
> (wrapper
>  native-to-managed) GdkSharp.PixbufDestroyNotifyWrapper:NativeCallback
> (intptr,i
> ntptr): IL_0030: call      0x00000006
> 
> Any ideas?
> 
> Thanks,
> Egon
> 

_______________________________________________
Gtk-sharp-list maillist  -  Gtk-sharp-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list

Reply via email to