CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何从文件加载图片?????

楼主xqc(阿春)2000-11-10 09:08:00 在 VC/MFC / 基础类 提问

在VC++中如何把一个位图文件加入到   CBitmap   中.  
          如:   LoadBitmap("c:\\a.bmp",...)  
     
          非常感谢! 问题点数:50、回复次数:5Top

1 楼Areslee(懒虫易水)回复于 2000-11-10 09:14:00 得分 0

用LoadImage()Top

2 楼milson(ifaq)回复于 2000-11-10 10:05:00 得分 15

HANDLE   hBitmap   =   LoadImage(NULL,   sBitmapFileName,   IMAGE_BITMAP,0,   0,    
  LR_LOADFROMFILE);Top

3 楼dingsg(丁丁)回复于 2000-11-10 11:07:00 得分 20

 
  The   following   code   uses   the   LoadImage   API   to   load   the   bitmap   as   a   DIBSection,   and   then   creates   a   palette   from   the   DIBSection's   color   table.   If   no   color   table   is   present,   a   halftone   palette   is   used:    
   
   
        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;  
  The   following   code   demonstrates   how   to   use   the   LoadBitmapFromBMPFile   function:    
  PAINTSTRUCT       ps;  
            HBITMAP               hBitmap,   hOldBitmap;  
            HPALETTE             hPalette,   hOldPalette;  
            HDC                       hDC,   hMemDC;  
            BITMAP                 bm;  
              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   );  
   
        }  
   
  Top

4 楼sun2000(非常可乐)回复于 2000-11-10 11:28:00 得分 0

你可以在msdn中找一下diblook的例程,当然上面的方法也可以。Top

5 楼liulianxi(阿喜)回复于 2000-11-10 12:36:00 得分 15

HBITMAP   m_bitmap;  
  m_bitmap   =   (HBITMAP)LoadImage(AfxGetInstanceHandle(),  
  "welcome.bmp",  
  IMAGE_BITMAP,  
  0,0,  
  LR_LOADFROMFILE   );  
  Top

相关问题

  • picture 通过文件加载图片,如何从内存中卸载此图片文件
  • lotus 表单中如何动态的加载本地的图片文件?
  • 如何加载图片?
  • 如何加载声音文件?
  • 如何动态加载js文件?
  • 如何加载外部txt文件。。
  • 如何加载NTFS文件系统
  • 如何从文件加载位图?
  • 如何加载*.lib库文件
  • 如何加载.DCU文件,急急急!!!

关键词

  • null
  • hrefdc
  • phbitmap
  • hbitmap
  • plogpal
  • dibsection
  • phpalette
  • bitmap
  • loadimage
  • hmemdc

得分解答快速导航

  • 帖主:xqc
  • milson
  • dingsg
  • liulianxi

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo