أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

HOWTO: كيفية القيام بـ استخدام LoadImage() قراءة ملف BMP

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية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;				
ملف BMP DIB DDB الصورة النقطية 4.00 kbdsd LoadImage LoadBitmap

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 158898 - آخر مراجعة: 11/21/2006 15:33:30 - المراجعة: 2.2

Microsoft Win32 واجهة برمجة تطبيقات

  • kbmt kbcode kbfaq kbhowto KB158898 KbMtar
تعليقات
&t=">>