Image einfügen
-
Hallo
Ich hab hier jetzt eine Anwendung geschrieben, und würde gerne noch irgendein Logo, Bild (wie auch immer) mit in den Hauptdialog mit einbinden.
Hat da jemand eine Idee, wie ich das machen kann?
-
Nunja, wenn man noch nicht einmal die Redsourcen kennt...
-
nene, ich meine jetzt kein Icon
sondern sowas wie urlaubsbild oder so
-
Picture Steuerelement
Bitmap als Ressource einfügen und in den Eigenschaften des Picture Steuerelement auswählen
-
Bitmap Resource.... Nenene, Icon ist eine Art von Resource.... ach egal.. Du kannst das mit dem Image Control(was nichts anderes als ne Modifizierte CStatic ist) benutzen... Musst halt sonnst mal bei codeproject.com und codeguru.com gucken, die haben recht nette Klassen für all deine Probleme...
-
nene, ich meine jetzt kein Icon
Ich hab das so verstanden das er eine ganz normale Grafik in sein Dialog einbinden will und kein Icon
-
Panschev schrieb:
nene, ich meine jetzt kein Icon
Ich hab das so verstanden das er eine ganz normale Grafik in sein Dialog einbinden will und kein Icon
Ganz nen schlauer... Hier hat er es sogar ausdrücklich gesagt...
sondern sowas wie urlaubsbild oder so
Aber eine Resource kann jede art von Datei sein... Man muss sie dann nur in die HBITMAP aus der Resource laden...
Sonnst hier nen Code von codeproject, womit man das auch aus ner Datei in eine HBitmap laden kann.... ist ganz einfach...
BOOL LoadBMPImage( LPCTSTR sBMPFile, CBitmap& bitmap, CPalette *pPal ) { CFile file; if( !file.Open( sBMPFile, CFile::modeRead) ) return FALSE; BITMAPFILEHEADER bmfHeader; if (file.Read((LPSTR)&bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader)) return FALSE; if (bmfHeader.bfType != ((WORD) ('M' << 8) | 'B')) return FALSE; DWORD nPackedDIBLen = file.GetLength() - sizeof(BITMAPFILEHEADER); HGLOBAL hDIB = ::GlobalAlloc(GMEM_FIXED, nPackedDIBLen); if (hDIB == 0) return FALSE; if (file.ReadHuge((LPSTR)hDIB, nPackedDIBLen) != nPackedDIBLen ) { ::GlobalFree(hDIB); return FALSE; } BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB ; BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ; int nColors = bmiHeader.biClrUsed ? bmiHeader.biClrUsed : 1 << bmiHeader.biBitCount; LPVOID lpDIBBits; if( bmInfo.bmiHeader.biBitCount > 8 ) lpDIBBits = (LPVOID)((LPDWORD)(bmInfo.bmiColors + bmInfo.bmiHeader.biClrUsed) + ((bmInfo.bmiHeader.biCompression == BI_BITFIELDS) ? 3 : 0)); else lpDIBBits = (LPVOID)(bmInfo.bmiColors + nColors); if( pPal != NULL ) { if( nColors <= 256 ) { UINT nSize = sizeof(LOGPALETTE) + (sizeof(PALETTEENTRY) * nColors); LOGPALETTE *pLP = (LOGPALETTE *) new BYTE[nSize]; pLP->palVersion = 0x300; pLP->palNumEntries = nColors; for( int i=0; i < nColors; i++) { pLP->palPalEntry[i].peRed = bmInfo.bmiColors[i].rgbRed; pLP->palPalEntry[i].peGreen = bmInfo.bmiColors[i].rgbGreen; pLP->palPalEntry[i].peBlue = bmInfo.bmiColors[i].rgbBlue; pLP->palPalEntry[i].peFlags = 0; } pPal->CreatePalette( pLP ); delete[] pLP; } } CClientDC dc(NULL); CPalette* pOldPalette = NULL; if( pPal ) { pOldPalette = dc.SelectPalette( pPal, FALSE ); dc.RealizePalette(); } HBITMAP hBmp = CreateDIBitmap( dc.m_hDC, &bmiHeader, CBM_INIT, lpDIBBits, &bmInfo, DIB_RGB_COLORS); bitmap.Attach( hBmp ); if( pOldPalette ) dc.SelectPalette( pOldPalette, FALSE ); ::GlobalFree(hDIB); return TRUE; }
Damit lassen sich allerdings nur bmp dateien laden, müsstest du für jpg aso abändern...
-
(D)Evil schrieb:
Damit lassen sich allerdings nur bmp dateien laden, müsstest du für jpg aso abändern...
...oder das hier nehmen:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39074.html