Cita:
Empezado por escafandra
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.
|
Hola escafandra, estuve viendo tu codigo, anda a la perfeccion, muchas gracias!!!!