begin process at 2012 05 29 06:32:17
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Est-il possible de sauvegarder une HIMAGELIST en bmp


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Est-il possible de sauvegarder une HIMAGELIST en bmp

vendredi 3 décembre 2004 à 11:56:15 | Est-il possible de sauvegarder une HIMAGELIST en bmp

youpiyoyo

comme l'explique le titre j'aurai besoin de sauvegarder une HIMAGELIST ke je crée dans un prog et j'aimerais le save dans un bmp

idée???
si vous avez une fonction n'hésiter po
youpi :)
vendredi 3 décembre 2004 à 12:27:39 | Re : Est-il possible de sauvegarder une HIMAGELIST en bmp

ymca2003

avec ImageList_GetImageInfo tu peux récupérer le HBITMAP interne avec les images de la liste dans la structure IMAGEINFO.

A partir de ce HBITMAP tu pouras le sauvegarder dans un fichier *.bmp un ex ici :
http://www.cppfrance.com/codes/SCR2BMP/27874.aspx)
vendredi 3 décembre 2004 à 13:07:34 | Re : Est-il possible de sauvegarder une HIMAGELIST en bmp

youpiyoyo

je te remercie je v jeter un coup d'oeil si j'ai des probleme je te recontact

youpi :)
vendredi 3 décembre 2004 à 13:29:36 | Re : Est-il possible de sauvegarder une HIMAGELIST en bmp

youpiyoyo

ok maintenant mon probleme c de save une HBITMAP en BMP :D

j'ai fais ca

IMAGEINFO FAR *pImageInfo;
ImageList_GetImageInfo(
himl2,
0,
pImageInfo
);
j'ai mon HBITMAP (pImageInfo->hbmImage) mais
comment le sauvegarder j'ai regarder le code et il me mank des info sur la dimension (L*l) dans le source ke tu m'as donner


youpi :)
vendredi 3 décembre 2004 à 13:55:10 | Re : Est-il possible de sauvegarder une HIMAGELIST en bmp

youpiyoyo

j'ai testé ca fourni par msdn

IMAGEINFO FAR *pImageInfo;
ImageList_GetImageInfo(
himl2,
0,
pImageInfo
);

HDC Hdcc=GetDC(NULL);
PBITMAPINFO bitmpinfo=CreateBitmapInfoStruct(0,pImageInfo->hbmImage);
CreateBMPFile(mainHwnd, "D:\\Bureau\\", bitmpinfo,
pImageInfo->hbmImage, Hdcc);

ou les fonction sont celle-ci
void CreateBMPFile(HWND hwnd, LPTSTR pszFile, PBITMAPINFO pbi,
HBITMAP hBMP, HDC hDC)
{
HANDLE hf; // file handle
BITMAPFILEHEADER hdr; // bitmap file-header
PBITMAPINFOHEADER pbih; // bitmap info-header
LPBYTE lpBits; // memory pointer
DWORD dwTotal; // total count of bytes
DWORD cb; // incremental count of bytes
BYTE *hp; // byte pointer
DWORD dwTmp;

pbih = (PBITMAPINFOHEADER) pbi;
lpBits = (LPBYTE) GlobalAlloc(GMEM_FIXED, pbih->biSizeImage);



// Retrieve the color table (RGBQUAD array) and the bits
// (array of palette indices) from the DIB.
GetDIBits(hDC, hBMP, 0, (WORD) pbih->biHeight, lpBits, pbi,
DIB_RGB_COLORS) ;


// Create the .BMP file.
hf = CreateFile(pszFile,
GENERIC_READ | GENERIC_WRITE,
(DWORD) 0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);

hdr.bfType = 0x4d42; // 0x42 = "B" 0x4d = "M"
// Compute the size of the entire file.
hdr.bfSize = (DWORD) (sizeof(BITMAPFILEHEADER) +
pbih->biSize + pbih->biClrUsed
* sizeof(RGBQUAD) + pbih->biSizeImage);
hdr.bfReserved1 = 0;
hdr.bfReserved2 = 0;

// Compute the offset to the array of color indices.
hdr.bfOffBits = (DWORD) sizeof(BITMAPFILEHEADER) +
pbih->biSize + pbih->biClrUsed
* sizeof (RGBQUAD);

// Copy the BITMAPFILEHEADER into the .BMP file.
WriteFile(hf, (LPVOID) &hdr, sizeof(BITMAPFILEHEADER),
(LPDWORD) &dwTmp, NULL);


// Copy the BITMAPINFOHEADER and RGBQUAD array into the file.
WriteFile(hf, (LPVOID) pbih, sizeof(BITMAPINFOHEADER)
+ pbih->biClrUsed * sizeof (RGBQUAD),
(LPDWORD) &dwTmp, ( NULL));

// Copy the array of color indices into the .BMP file.
dwTotal = cb = pbih->biSizeImage;
hp = lpBits;
WriteFile(hf, (LPSTR) hp, (int) cb, (LPDWORD) &dwTmp,NULL);

// Close the .BMP file.
CloseHandle(hf);

// Free memory.
GlobalFree((HGLOBAL)lpBits);
}

PBITMAPINFO CreateBitmapInfoStruct(HWND hwnd, HBITMAP hBmp)
{
BITMAP bmp;
PBITMAPINFO pbmi;
WORD cClrBits;

// Retrieve the bitmap color format, width, and height.
GetObject(hBmp, sizeof(BITMAP), (LPSTR)&bmp);

// Convert the color format to a count of bits.
cClrBits = (WORD)(bmp.bmPlanes * bmp.bmBitsPixel);
if (cClrBits == 1)
cClrBits = 1;
else if (cClrBits <= 4)
cClrBits = 4;
else if (cClrBits <= 8)
cClrBits = 8;
else if (cClrBits <= 16)
cClrBits = 16;
else if (cClrBits <= 24)
cClrBits = 24;
else cClrBits = 32;

// Allocate memory for the BITMAPINFO structure. (This structure
// contains a BITMAPINFOHEADER structure and an array of RGBQUAD
// data structures.)

if (cClrBits != 24)
pbmi = (PBITMAPINFO) LocalAlloc(LPTR,
sizeof(BITMAPINFOHEADER) +
sizeof(RGBQUAD) * (1<< cClrBits));

// There is no RGBQUAD array for the 24-bit-per-pixel format.

else
pbmi = (PBITMAPINFO) LocalAlloc(LPTR,
sizeof(BITMAPINFOHEADER));

// Initialize the fields in the BITMAPINFO structure.

pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
pbmi->bmiHeader.biWidth = bmp.bmWidth;
pbmi->bmiHeader.biHeight = bmp.bmHeight;
pbmi->bmiHeader.biPlanes = bmp.bmPlanes;
pbmi->bmiHeader.biBitCount = bmp.bmBitsPixel;
if (cClrBits < 24)
pbmi->bmiHeader.biClrUsed = (1<<cClrBits);

// If the bitmap is not compressed, set the BI_RGB flag.
pbmi->bmiHeader.biCompression = BI_RGB;

// Compute the number of bytes in the array of color
// indices and store the result in biSizeImage.
// For Windows NT, the width must be DWORD aligned unless
// the bitmap is RLE compressed. This example shows this.
// For Windows 95/98/Me, the width must be WORD aligned unless the
// bitmap is RLE compressed.
pbmi->bmiHeader.biSizeImage = ((pbmi->bmiHeader.biWidth * cClrBits +31) & ~31) /8
* pbmi->bmiHeader.biHeight;
// Set biClrImportant to 0, indicating that all of the
// device colors are important.
pbmi->bmiHeader.biClrImportant = 0;
return pbmi;
}


ca merde sur PBITMAPINFO bitmpinfo=CreateBitmapInfoStruct(0,pImageInfo->hbmImage);
me di ke la memoire ne peut etre read!!!

une idée???????
youpi :)
vendredi 3 décembre 2004 à 14:43:32 | Re : Est-il possible de sauvegarder une HIMAGELIST en bmp

ymca2003

Pour récupérer la taille d'un bitmap :
HBITMAP hBmp;
BITMAP bmpInfo;
GetObject(hBmp, sizeof(BITMAP), &bmpInfo);



BITMAPINFOHEADER bmih,
bmih.biSize = sizeof(BITMAPINFOHEADER);
bmih.biWidth = bmpInfo.bmWidth;
bmih.biHeight = bmpInfo.bmHeight;
bmih.biBitCount = 24
bmih.biCompression = BI_RGB;
bmih.biPlanes = 1;
bmih.biSizeImage = 0;
bmih.biXPelsPerMeter = 0;
bmih.biYPelsPerMeter = 0;
bmih.biClrUsed = 0;
bmih.biClrImportant = 0;
BITMAPINFO bmi;
bmi.bmiHeader = bmih;

// nombre d'octets par ligne (doit être multiple de 4)
DWORD dwBPL = 4*(((bmpInfo.bmWidth*3)+3)/4);
BYTE* pPixels = new BYTE[dwBPL*bmpInfo.bmHeight];

HDC hdc = GetDC(NULL);
GetDIBits(hdc, hBmp, 0, bmpInfo.bmHeight, pPixels, &bmi, DIB_RGB_COLORS));

BITMAPFILEHEADER bhf;
bfh.bfType = 0x4d42;
bfh.bfReserved1 = 0;
bfh.bfReserved2 = 0;
bfh.bfOffBits = sizeof(BITMAPINFOHEADER);
bfh.bfSize = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER) + dwBPL*bmpInfo.bmHeight;

DWORD dwTmp;
WriteFile(hFile, &bfh, sizeof(BITMAPFILEHEADER), &dwTmp, NULL);

WriteFile(hFile, &bmih, sizeof(BITMAPINFOHEADER), &dwTmp, NULL);

WriteFile(hFile, pPixels, dwBPL*bmpInfo.bmHeight, &dwTmp, NULL);

vendredi 3 décembre 2004 à 16:01:37 | Re : Est-il possible de sauvegarder une HIMAGELIST en bmp

youpiyoyo

c bon je viens de trouver

le probleme venait de la...

IMAGEINFO pImageInfo;
ImageList_GetImageInfo(himl2,20,&pImageInfo);

HDC Hdcc=GetDC(NULL);
PBITMAPINFO bitmpinfo=CreateBitmapInfoStruct(0,pImageInfo.hbmImage);
CreateBMPFile(mainHwnd, "D:\\Bureau\\tmp.bmp", bitmpinfo,
pImageInfo.hbmImage, Hdcc);

moi et les pointeur lol :D
youpi :)


Cette discussion est classée dans : possible, bmp, sauvegarder, himagelist


Répondre à ce message

Sujets en rapport avec ce message

Comment sauvegarder dans un fichier [ par AryCooL ] Bonjour tout le monde,Je suis débutant et je voudrais savoir s'il est possible de sauvegarder une classe dans un fichier (en CPP).Si oui comment fait- Est-il possible d'afficher une image bmp à partir d'un projet Win32 Console Application ? [ par iris00 ] tout est dans la question.... :) inserer une image . bmp [ par kikaanouar ] je vx savoir est ce que c 'est possible d inserer une image .bmp dans un programme fait en langage c avec le mode graph si c possible est ce que vous Conversion JPEG -> BMP [ par ygor ] Bonjour, Je recherche donc un source ou des expliquations pour convertir du jpeg en bmp. si possible le source le plus cours possible et le plus deta fichier bmp [ par pmolina ] bonjour,j'utilise plusieurs images pour une interface graphique et donc plusieurs fichiers bmp.Je me demande s'il est possible de rassembler ces image Fonctions Miroir et Flip sur une image BMP [ par calas ] Salut à tous,Je suis à la recherche d'une fonction simple sous C++ Builder qui permettrait d'inverser une image BMP en droite-gauche ou haut-bas... qu Mono Document Important plzzzzz :s [ par FlamZeNioub ] Slt,est-ce que quelqu'un pourrait me dire si c'est possible d'inserer une image dans la page principale d'un mono document histoire de remplacer le vi Version de programme sous Visual 97 [ par themaste ] Salut a tous!Voila, je viens de récupérer un vieux programme dont je dois faire des mise à jour. Je dois bosser sous visual studio 97, et je n'arrive Sauvegarder des infos [ par progmaster ] Bonjours,je voudrais savoir comment je fais pour sauvegarder des infos. Je m'explique je construit un annuaire et je voudrais sauvegarder les noms et erreur ImageList_Create [ par maevasa ] bonjour, j'ai une erreur sur ce code et il ne veut même pas m'ouvrir le débug.et lorsque je mets hImageList=ImageList_Create(32,32,ILC_COLORDDB | ILC_


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales