Re: [Eqalign-devel] Beta
Brought to you by:
antoniofga,
isoplut
From: Andres d. P. P. <and...@gm...> - 2007-10-04 09:42:29
|
Francisco José wrote: > Por pedir que no quede!! jejee > > Bueno, antes de nada te planteo una duda que me está volviendo loco, a > ver si me puedes echar una mano tu que estás más puesto en C#; verás, > al realizar una exposición la cámara almacena la imagen en un buffer > interno, la función que se encarga de esto, en C++ es: > EXPORT void _stdcall GETBUFFER(void *x, DWORD s); > > Lo que traducida a C# se me quedaría así: > [DllImport("CMOSDLL.DLL")] > private static extern void GETBUFFER(IntPtr x, uint s); > > Esta función necesita el buffer y los pixels que se desean obtener. > > [...] En el programa que me hice para controlar la reflex tuve un problema parecido. Lo solucioné haciendo lo siguiente: * Crear un Bitmap en el formato (pixelformat) en el que la DLL te va a devolver los datos * Obtener un objeto BitmapData para acceder a los datos del bitmap utilizando Bitmap.LockBits() * La propiedad BitmapData.Scan0 te da un puntero a los datos que le puedes pasar a la DLL Sería esto: PixelFormat format = PixelFormat.Format16bppGrayScale; System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(width, height, format); System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, format); GETBUFFER(bmpData.Scan0,1310720); bmp.UnlockBits(); Espero que te sirva. Saludos, Andrés. |