国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
怎樣用VC++實現(xiàn)對24位bmp圖像的打開和顯示(bmp圖片假定放在D盤picture文件夾內)
24位位圖在VC++中需要三個結構來存儲:
BITMAPFILEHEADER:文件信息頭
LPBITMAPINFOHEADER:位圖信息頭指針
LPBYTE:像素數(shù)據(jù)指針

假設你的圖片名為:“圖片.bmp”。

1、你用VC++建立一個MFC(exe)工程,命名為“My”,在彈出的“MFC應用程序向導-步驟1”中選“單文檔”,然后點“完成”->“確定”。

2、在“MyView.h”文件中找到代碼“CMyDoc* GetDocument();”在其下方添加如下代碼:
BITMAPINFOHEADER bmih;
LPBYTE pBits;
BOOL Read(char* s);

3、然后打開“MyView.cpp”文件,在最下面寫如下代碼:
BOOL CMyView::Read(char* s)
{
CFile file;
BITMAPFILEHEADER bmfh;

//打開文件
if(!file.Open(s,CFile::modeRead))
{
  AfxMessageBox("File cannot open!");
  return FALSE;
}

//讀文件信息頭
file.Read( (LPVOID)&bmfh, sizeof(bmfh) );
if(bmfh.bfType != 0x4d42)
{
  AfxMessageBox("This is not a bmp file!");
  return FALSE;
}

//讀位圖信息頭
int infoSize = bmfh.bfOffBits - sizeof(bmfh);
bmih = (LPBITMAPINFOHEADER)new BYTE[infoSize];
file.Read( (LPVOID)bmih, infoSize);
if(bmih->biBitCount!=24)
{
  AfxMessageBox("The number of colors is not valid!");
  return FALSE;
}

//讀圖像數(shù)據(jù)
pBits = new BYTE[bmih->biSizeImage];
file.Read( (LPVOID)pBits, bmih->biSizeImage);

return TRUE;
}

4、往上找,找到構造函數(shù):CMyView::CMyView()
在其中添加代碼:
Read("d:\\picture\\圖片.bmp");

5、往下找,找到OnDraw函數(shù),在該函數(shù)的第三行添加代碼:
if(bmih && pBits)
{
  ::StretchDIBits(pDC->GetSafeHdc(),0,0,bmih->biWidth,bmih->biHeight,0,0,bmih->biWidth,bmih->biHeight,pBits,(LPBITMAPINFO)bmih,DIB_RGB_COLORS,SRCCOPY);
}

運行即可。我已試過,可以打開并顯示。希望你一步一步照做,代碼不要寫錯!

 
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

////////////////////////////////////////////

FILE *fopen( const char *filename, const char *mode );mode一般為"r"或者"w",Opens for reading. Opens an empty file for writing.

fopen("G:\\test.txt",'w'); 可行

filename = dlg.GetPathName(); 可以獲得路徑

///////////////////////////////////////////////////////////

fread: Reads data from a stream 從一個流中讀數(shù)據(jù)

Pointer to FILE structure

int fread(void *buffer, int size, int count, FILE *stream);

  參 數(shù):用于接收數(shù)據(jù)的地址(字符型指針)(buffer) Storage location for data

  單個元素的大?。╯ize) Item size in bytes

  元素個數(shù)(count)Maximum number of items to be read

  提供數(shù)據(jù)的文件指針(stream)

  返回值:成功讀取的元素個數(shù)

////////////////////////////////////////////

 

打開文件后讀取bmp文件中的數(shù)據(jù):

FILE *fp=fopen(filename,"r"); //按照filename的路徑打開文件

BITMAPFILEHEADER fileheader;
BITMAPINFO info;

fread(&fileheader,sizeof(fileheader),1,fp); //讀取頭文件信息

if(fileheader.bfType!=0x4D42)
{
   pDC->TextOut(100,200,"無位圖文件 請選擇位圖文件");
   fclose(fp);
   return ;
}

fread(&info.bmiHeader, sizeof(BITMAPINFOHEADER), 1, fp);      /*讀取信息頭*/
long width=info.bmiHeader.biWidth;
long height=info.bmiHeader.biHeight;                   //位圖高度及寬度
UCHAR *buffer=new UCHAR[info.bmiHeader.biSizeImage];   //位圖的大小
fseek(fp,fileheader.bfOffBits,0);                      //重定位流上的文件指針,接下來的操作將從新位置開始
fread(buffer,info.bmiHeader.biSizeImage,1,fp);


本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用VC實現(xiàn)將自繪圖形輸出為bmp文件
詳解用VC實現(xiàn)bmp位圖的打開 - fengqing888的日志 - 網易博客
關于Matlab整數(shù)判別與文件自動保存
VC++6.0將數(shù)據(jù)文件圖像化
在OpenCV2.2中使用CvvImage類
VC中的0XCCCCCCCC
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服