RT
请高手指点哈~~
最好有参考代码~~
.cn

解决方案 »

  1.   

    写个获取Bitmap 文件名的方法
    可以遍历你存放Bitmap的文件夹
    然后
    BOOL LoadBitmap( LPCTSTR lpszResourceName );如果图片不多 直接加载在资源中也可以根据ID显示
    BOOL LoadBitmap( UINT nIDResource );
      

  2.   

    因为图片是不确定的,所以不好用指定资源的方法,
    Load过后怎么处理啊?
    楼上的说详细点好吧~~
    谢谢了,分数不多,不过肯定给的
      

  3.   

    LoadBitmap是从程序资源中取位图,要从指定取位图可以用CImage类,调用CImage类的Load函数。
    连续显示可以用SetTimer定时切换。
    LZ的问题描述不够清楚,所以没没法说得太详细。
      

  4.   

    我是要从SD卡里读取几张BMP图片,然后循环显示出来~~
      

  5.   

    每张图定义一个CImage型变量,用SetTimer定时切换。
      

  6.   

    楼上的有显示一副BMP图像的代码吗?
    给我参考下~~
      

  7.   

    代码没有。
    如果你用Picture控件显示,就关联一个CStatic变量,显示时调CStatic类的SetBitmap,参数给CImage类的实例,这样就可以了。
      

  8.   

    1、BMP格式图片的显示利用句柄进行显示,显示的主要代码如下 
    HDC hdc;         //设备环境句柄
    HDC hdcmem;      //内存设备环境句柄
    HBITMAP hBm;     //位图句柄
    BITMAP bm;      //BITMAP结构以下代码段可以放入WM_CREATE消息中
    hdc=GetDC(hWnd);                       //获取设备环境
    hBm=LoadBitmap(hInst,(LPCWSTR)IDB_BMP_LOGO_MAIN);  //加载位图
    GetObject(hBm,sizeof(BITMAP),(LPVOID)&bm);       //获取位图尺寸
    hdcmem=CreateCompatibleDC(hdc);                  //获取内存设备环境
    ReleaseDC(hWnd,hdc);                        //释放设备环境 以下代码段可以放入WM_PAINT消息中  
    hdc = BeginPaint(hWnd, &ps);
    SelectObject(hdcmem, hBm);
    //调用函数BitBlt将内存设备环境中的位图复制到设备环境中
    BitBlt(hdc,0,0,bm.bmWidth, bm.bmHeight, hdcmem, 0 , 0 ,SRCCOPY);
    EndPaint(hWnd, &ps);
    在网上找到以上代码,可是在EVC下面报错了
    什么原因啊?
      

  9.   

    我做过图片浏览器,这里给你代码 参考下// TODO: 在此添加命令处理程序代码
    TCHAR szFilter[]=_T("BMP (*.bmp)|*.bmp|All Files (*.*)|*.*||");
    CFileDialog dlg(TRUE,_T("*.bmp"),_T("*.bmp"),NULL,szFilter);
    dlg.m_ofn.Flags |= OFN_FILEMUSTEXIST;
    dlg.m_ofn.lpstrTitle = _T("读取BMP图片");
    //dlg.m_ofn.lpstrFile=_T("陈煜");
    if( !dlg.DoModal() )
    return ; //清空
    m_Path.clear(); //打开要映射的文件到内存
    m_strFilePath=dlg.GetPathName();//+dlg.GetFileName(); int nPos=m_strFilePath.ReverseFind(_T('\\'))+1;
    CString strFile=m_strFilePath.Left(nPos);
    CString FilePath=strFile+_T("*.bmp"); CFileFind find;
    BOOL bWork=find.FindFile(FilePath);
    while(bWork)
    {
    //OpenBmp();
    bWork=find.FindNextFile();
    CString str=find.GetFileName();
    str=strFile+str; m_Path.push_back(str);
    } m_nPos=m_Path.size()-1; OpenBmp();
    }
    void CMainWindow::OnBmpNext()
    {
    // TODO: 在此添加命令处理程序代码
    if( m_Path.empty() )
    {
    return ;
    } if( m_nPos--==0 )
    {
    m_nPos=m_Path.size()-1;
    } m_strFilePath=m_Path.at(m_nPos);
    OpenBmp();
    }
    void CMainWindow::OpenBmp()
    {
    if( m_strFilePath.IsEmpty() )
    {
    return ;
    } HANDLE hFile=::CreateFile(m_strFilePath,GENERIC_READ,FILE_SHARE_READ,NULL,
    OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if( hFile==INVALID_HANDLE_VALUE )
    {
    MessageBox(_T("读取文件出错"));
    return;
    } //创建内存映射
    HANDLE hMap=::CreateFileMapping(hFile,NULL,PAGE_READONLY,NULL,NULL,NULL); //映射整个BMP文件内存,返回首地址
    LPVOID lpBase=::MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);
    //获取BMP信息
    BITMAPFILEHEADER *pBmpHeader;
    BITMAPINFO *pBmpInfo; //取得BmpHeader指针,获得像素
    pBmpHeader=(BITMAPFILEHEADER *)lpBase;
    if( pBmpHeader->bfType!=MAKEWORD('B','M') )
    {
    MessageBox(_T("只能读取BMP图像文件")); ::UnmapViewOfFile(lpBase);
    ::CloseHandle(hMap);
    ::CloseHandle(hFile); return;
    } BYTE *pBits=(BYTE *)lpBase+pBmpHeader->bfOffBits; //取得BmpInfo指针,获得文件大小
    pBmpInfo=(BITMAPINFO *)((BYTE *)lpBase+sizeof(BITMAPFILEHEADER));
    m_nHeight=pBmpInfo->bmiHeader.biHeight;
    m_nWidth=pBmpInfo->bmiHeader.biWidth;
    //显示BMP到内存设备
    CClientDC dc(this);
    //创建兼容DC
    HBITMAP hBitmap=::CreateCompatibleBitmap(dc,m_nWidth,m_nHeight);
    ::SelectObject(m_hMemDC,hBitmap); //把图像放到设备中
    int nRet=::SetDIBitsToDevice(m_hMemDC,0,0,m_nWidth,m_nHeight,0,0,0,
    m_nHeight,pBits,pBmpInfo,DIB_RGB_COLORS); InvalidateRect(NULL,TRUE); ::DeleteObject(hBitmap);
    ::UnmapViewOfFile(lpBase);
    ::CloseHandle(hMap);
    ::CloseHandle(hFile); //这册热键
    RegisterHotKey(GetSafeHwnd(),WM_MY_HOTKEY,0,VK_F3);
    }
      

  10.   

    InvalidateRect(NULL,TRUE); 
    在哪里重绘啊???
      

  11.   

     在OnDraw函数里加这些代码怎么显示不出来啊!!!
    高手指点下~~       
            CBitmap m_Bitmap;
    LPCTSTR fileName = L"cc.bmp";
    // HBITMAP hBitmap=LoadBitmap(NULL,fileName);
    if (!m_Bitmap.LoadBitmap(fileName))
    {
    return;
    }
    // m_Bitmap.Attach (hBitmap);
    CDC dcImage;
    if(!dcImage.CreateCompatibleDC (pDC))
    return;
    BITMAP bm;
    m_Bitmap.GetBitmap (&bm);
    dcImage.SelectObject (&m_Bitmap);
    ImageHeight=bm.bmHeight;
    ImageWidth=bm.bmWidth; // 绘制位图的函数BitBlt
    pDC->BitBlt (0, 0, ImageHeight, ImageWidth, &dcImage, 0, 0, SRCCOPY);
      

  12.   

    LoadBitmap的意思早跟你解释过了。
      

  13.   

    可是我上面的代码运行在EVC下面,什么也没有显示,在VC下面却显示正常