В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Методические УКАЗАНИЯ: Как использовать LoadImage() для чтения файла BMP

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:158898
Аннотация
В LoadImage API можно использовать для загрузки растрового изображения из файла BMP. Тем не менее он не возвращает сведения о палитре. В этой статье примеры кода и описывается, как извлечь сведения о палитре точечного рисунка с LoadImage.
Дополнительная информация
В следующем коде используется LoadImage Интерфейс API для загрузки растрового изображения какDIBSection, а затем создает палитру из таблицы цветов DIBSection.Если таблица цветов не существует, используется палитры полутонов.
   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;   }				
Следующий код демонстрирует использование LoadBitmapFromBMPFileфункции:
   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;				
Файл DIB DDB точечный РИСУНОК BMP 4.00 kbdsd LoadImage LoadBitmap

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 158898 — последний просмотр: 06/03/2011 10:04:00 — редакция: 4.0

Microsoft Win32 Application Programming Interface

  • kbcode kbFAQ kbhowto kbmt KB158898 KbMtru
Отзывы и предложения