Šiuo metu esate neprisijungę, laukiama, kol iš naujo prisijungsite prie interneto

HOWTO: Kaip naudotis LoadImage() skaityti BMP failą

SVARBU: šis straipsnis išverstas naudojant „Microsoft“ mašininio vertimo programinę įrangą ir gali būti pataisytas naudojant „Community Translation Framework“ (CTF) technologiją. „Microsoft“ siūlo mašinos išverstus ir po to bendruomenės suredaguotus straipsnius, taip pat žmogaus išverstus straipsnius siekdama suteikti prieigą prie visų savo žinių bazės straipsnių daugeliu kalbų. Mašinos išverstuose ir vėliau paredaguotuose straipsniuose gali būti žodyno, sintaksės ir / arba gramatikos klaidų. „Microsoft“ neatsako už jokius netikslumus, klaidas arba žalą, patirtą dėl neteisingo turinio vertimo arba mūsų klientų naudojimosi juo. Daugiau apie CTF žr. http://support.microsoft.com/gp/machine-translation-corrections.

Spustelėkite čia, norėdami pamatyti šio straipsnio versiją anglų kalba: 158898
Santrauka
LoadImage API gali būti naudojama pakrauti rastrinis vaizdas iš BMP failą. Tačiau ji negrąžina paletės informacija. Šis straipsnis suteikia mėginio kodą ir aprašoma, kaip nuskaityti bitmap su LoadImagepaletės informaciją.
Daugiau informacijos
Šis kodas naudoja LoadImage API kaip Rastro įkelti įDIBSection, ir tada sukuria paletę ir DIBSection spalvų lentelę.Jei nėra spalvų lentelę, pustonių paletės yra naudojamas:
   BOOL LoadBitmapFromBMPFile( LPTSTR szFileName, HBITMAP *phBitmap,   HPALETTE *phPalette )   {   BITMAP  bm;   *phBitmap = NULL;   *phPalette = NULL;   // Use LoadImage() to get the image loaded into a DIBSection   *phBitmap = (HBITMAP)LoadImage( NULL, szFileName, IMAGE_BITMAP, 0, 0,               LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );   if( *phBitmap == NULL )     return FALSE;   // Get the color depth of the DIBSection   GetObject(*phBitmap, sizeof(BITMAP), &bm );   // If the DIBSection is 256 color or less, it has a color table   if( ( bm.bmBitsPixel * bm.bmPlanes ) <= 8 )   {   HDC           hMemDC;   HBITMAP       hOldBitmap;   RGBQUAD       rgb[256];   LPLOGPALETTE  pLogPal;   WORD          i;   // Create a memory DC and select the DIBSection into it   hMemDC = CreateCompatibleDC( NULL );   hOldBitmap = (HBITMAP)SelectObject( hMemDC, *phBitmap );   // Get the DIBSection's color table   GetDIBColorTable( hMemDC, 0, 256, rgb );   // Create a palette from the color tabl   pLogPal = (LOGPALETTE *)malloc( sizeof(LOGPALETTE) + (256*sizeof(PALETTEENTRY)) );   pLogPal->palVersion = 0x300;   pLogPal->palNumEntries = 256;   for(i=0;i<256;i++)   {     pLogPal->palPalEntry[i].peRed = rgb[i].rgbRed;     pLogPal->palPalEntry[i].peGreen = rgb[i].rgbGreen;     pLogPal->palPalEntry[i].peBlue = rgb[i].rgbBlue;     pLogPal->palPalEntry[i].peFlags = 0;   }   *phPalette = CreatePalette( pLogPal );   // Clean up   free( pLogPal );   SelectObject( hMemDC, hOldBitmap );   DeleteDC( hMemDC );   }   else   // It has no color table, so use a halftone palette   {   HDC    hRefDC;   hRefDC = GetDC( NULL );   *phPalette = CreateHalftonePalette( hRefDC );   ReleaseDC( NULL, hRefDC );   }   return TRUE;   }				
Šį kodą parodo, kaip naudotis LoadBitmapFromBMPFilefunkcija:
   case WM_PAINT:   {     PAINTSTRUCT   ps;     HBITMAP       hBitmap, hOldBitmap;     HPALETTE      hPalette, hOldPalette;     HDC           hDC, hMemDC;     BITMAP        bm;   hDC = BeginPaint( hWnd, &ps );   if( LoadBitmapFromBMPFile( szFileName, &hBitmap, &hPalette ) )   {      GetObject( hBitmap, sizeof(BITMAP), &bm );      hMemDC = CreateCompatibleDC( hDC );      hOldBitmap = (HBITMAP)SelectObject( hMemDC, hBitmap );      hOldPalette = SelectPalette( hDC, hPalette, FALSE );      RealizePalette( hDC );      BitBlt( hDC, 0, 0, bm.bmWidth, bm.bmHeight,              hMemDC, 0, 0, SRCCOPY );      SelectObject( hMemDC, hOldBitmap );      DeleteObject( hBitmap );      SelectPalette( hDC, hOldPalette, FALSE );      DeleteObject( hPalette );   }   EndPaint( hWnd, &amp;ps );   }   break;				
4.00 kbdsd RASTRAS DDB DIB BMP failą LoadImage LoadBitmap

Įspėjimas: šis straipsnis išverstas automatiškai

Savybės

Straipsnio ID: 158898 – Paskutinė peržiūra: 06/07/2013 00:12:00 – Peržiūra: 1.0

Microsoft Win32 Application Programming Interface (programavimo aplinka)

  • kbcode kbFAQ kbhowto kbmt KB158898 KbMtlt
Atsiliepimai
html>"; document.write("