MFC图片显示,pictrue

    xiaoxiao2021-03-25  115

    //图片显示----------------------------------------------------------------------------------------------------- CString filter; CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter,NULL);           //打开对话框获取图像信息 CString BmpName = "shenjie.bmp";     //获取文件路径名   如D:\pic\abc.bmp CString EntName = "bmp"; //获取文件扩展名 EntName.MakeLower();                 //将文件扩展名转换为一个小写字符 //定义变量存储图片信息 BITMAPINFO *pBmpInfo;       //记录图像细节 BYTE *pBmpData;             //图像数据 BITMAPFILEHEADER bmpHeader; //文件头 BITMAPINFOHEADER bmpInfo;   //信息头 CFile bmpFile;              //记录打开文件 //以只读的方式打开文件 读取bmp图片各部分 bmp文件头 信息 数据 if(!bmpFile.Open(BmpName, CFile::modeRead|CFile::typeBinary))  return; if (bmpFile.Read(&bmpHeader,sizeof(BITMAPFILEHEADER)) != sizeof(BITMAPFILEHEADER)) return; if (bmpFile.Read(&bmpInfo,sizeof(BITMAPINFOHEADER)) != sizeof(BITMAPINFOHEADER)) return; pBmpInfo = (BITMAPINFO *)new char[sizeof(BITMAPINFOHEADER)]; //为图像数据申请空间 memcpy(pBmpInfo,&bmpInfo,sizeof(BITMAPINFOHEADER)); DWORD dataBytes = bmpHeader.bfSize - bmpHeader.bfOffBits; pBmpData = (BYTE*)new char[dataBytes]; bmpFile.Read(pBmpData,dataBytes); bmpFile.Close(); //显示图像 CWnd *pWnd=GetDlgItem(IDC_STATICaaa); //获得pictrue控件窗口的句柄 CRect rect; pWnd->GetClientRect(&rect); //获得pictrue控件所在的矩形区域 CDC *pDC=pWnd->GetDC(); //获得pictrue控件的DC pDC->SetStretchBltMode(COLORONCOLOR); StretchDIBits(pDC->GetSafeHdc(),0,0,rect.Width(),rect.Height(),0,0, bmpInfo.biWidth,bmpInfo.biHeight,pBmpData,pBmpInfo,DIB_RGB_COLORS,SRCCOPY);
    转载请注明原文地址: https://ju.6miu.com/read-9917.html

    最新回复(0)