Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Thế nào: Làm thế nào để sử dụng LoadImage() để đọc một tập tin BMP

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:158898
TÓM TẮT
Các LoadImage API có thể được sử dụng để tải một ảnh bitmap từ một tập tin BMP. Tuy nhiên, nó không phải trở về bảng thông tin. Bài viết này cung cấp mẫu mã và mô tả làm thế nào để lấy thông tin bảng cho bitmap với LoadImage.
THÔNG TIN THÊM
Sau mã sử dụng các LoadImage API để tải bitmap như mộtDIBSection, và sau đó tạo ra một bảng màu từ bảng màu của DIBSection.Nếu không có bảng màu là hiện nay, một bảng màu ảnh bán sắc được sử dụng:
   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;   }				
Mã sau đây chứng tỏ làm thế nào để sử dụng các LoadBitmapFromBMPFilechức năng:
   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 tập tin BITMAP DDB DIB BMP LoadImage LoadBitmap

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 158898 - Xem lại Lần cuối: 08/18/2011 10:07:00 - Bản sửa đổi: 2.0

Microsoft Win32 Application Programming Interface

  • kbcode kbFAQ kbhowto kbmt KB158898 KbMtvi
Phản hồi