Ver Mensaje Individual
  #2  
Antiguo 04-10-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Reputación: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Windows trata las imágenes como objetos DIB que son la imagen en memoria de los bmp (de distinta profundidad de color). Las API que usan ongetos DIB trabajan con estas imégenes de memoria.

Hace unos años cree un código para lo que creo que necesitas.

Para convertir un objeto TBitmap a este tipo de objeto analiza este código:

Código:
BITMAPFILEHEADER *FileHeader;
BITMAPINFO       *Info;
void             *Bits;
TMemoryStream    *SMBitmap;
  
SMBitmap = new TMemoryStream;
Bitmap->SaveToStream(SMBitmap);
SMBitmap->Position = 0;
  
FileHeader = (LPBITMAPFILEHEADER)SMBitmap->Memory;
Info = (LPBITMAPINFO)((Byte*)SMBitmap->Memory + sizeof(BITMAPFILEHEADER));
int  nColors = Info->bmiHeader.biClrUsed;
int  colorAlloc = nColors * sizeof(RGBQUAD); // size of color tables

// Info es la imagen del DIB  (BITMAPINFO)
// Esta es la imagen en memoria de los pixels:
Bits = (char*)Info + ((int)Info->bmiHeader.biSize + colorAlloc);

Si lo que buscas es el simple traslado de la Imagen, quizás te baste con las funciones TBitmap.SaveToStream y TBitmap.LoadFromStream.


Espero que sea esto lo que buscas.
Saludos.

Última edición por escafandra fecha: 04-10-2008 a las 19:39:03.
Responder Con Cita