VC 建立BMP檔案並顯示

2021-07-06 04:24:54 字數 2005 閱讀 2298

建立mfc cstatic的pciture外掛程式 設定為frame

1 在標頭檔案中初始化bmp檔案頭資訊變數:

bitmapfileheaderm_bmfheader;

bitmapinfoheaderm_bmiheader;

lpbyte *lpbbmdata;

bitmapinfo *bminfo;

uintwidth = 1024;

uintheight = 768;

2 設定定時器:

settimer(1, 55, null);

3 初始化bmp檔案資訊

//m_bmfheader

m_bmfheader.bftype = 0x4d42;

m_bmfheader.bfoffbits = 0x36;

m_bmfheader.bfsize = 3 * width * height + m_bmfheader.bfoffbits;

m_bmfheader.bfreserved1 = 0;

m_bmfheader.bfreserved2 = 0;

//m_bmiheader

m_bmiheader.bisize = sizeof(bitmapinfoheader); //指示 檔案資訊頭大小

m_bmiheader.biwidth = width; //寬度

m_bmiheader.biheight = height; //高度

m_bmiheader.biplanes = 1;

m_bmiheader.bibitcount = 24; //位數,位24點陣圖

m_bmiheader.bicompression = 0; //表示沒有壓縮  //因為沒有壓縮,所以可以設定為0

m_bmiheader.bisizeimage = widthbytes(width * m_bmiheader.bibitcount) * height;

m_bmiheader.bixpelspermeter = 0x0;

m_bmiheader.biypelspermeter = 0x0;

m_bmiheader.biclrused = 0; //表明使用所有索引色

m_bmiheader.biclrimportant = 0; //說明對圖象顯示有重要影響的顏色索引的數目,0表示都重要。

//以上共佔據14+16+24個位元組

bminfo = new bitmapinfo;

bminfo->bmiheader = m_bmiheader;

bminfo->bmicolors->rgbblue = 0x0;

bminfo->bmicolors->rgbgreen = 0x0;

bminfo->bmicolors->rgbred = 0x0;

bminfo->bmicolors->rgbreserved = 0x0;

lpbbmdata = new lpbyte[height];

4 設定rgb畫素

bool cshowpicdlg::createpic(uint width, uint height)

}cclientdc cpicdc(getdlgitem(idc_static_picture));

cdc*pcpicdc;

cwnd*pwnd = getdlgitem(idc_static_picture);

pcpicdc = pwnd->getdc();

for (i = 0; i < m_bmiheader.biheight; i++)

//for (i = 0; i < height; i++)

//return true;}

5 定時器函式

void cshowpicdlg::ontimer(uint_ptr nidevent)

}注意事項:

1 計算每次初始化資料和顯示所花的時間,再設定定時器的時間。

2 如果bmp的相關引數變數使用的區域性變數,再每次顯示完資料後需要釋放記憶體。因此最好使用全域性變數,不用每次分配記憶體、釋放記憶體,比較耗費時間。

VC建立BMP檔案

byte data bmp資料 int pbitssize bmp資料大小 int intimgsize 生成的bmp檔案大小 cstring filename bmp檔名 void createbmp byte data,int pbitssize,int intimgsize,cstringfi...

framebuffer顯示bmp檔案,考慮填補問題

因為bmp檔案的寬度如果不是4的倍數,就會自動填充。因為這個問題掉到坑里了,導致是黑白的,下面這個 考慮填充的問題,關鍵在下面的skip 我的機器顯示屏是24位的,bmp檔案也是24位的,測試 如下 bmp.c檔案 include bmp.h fbp,對映記憶體起始位址 scrinfo,螢幕資訊結構...

截圖並生成BMP檔案

cdc dc dc.createdc t display null,null,null cbitmap bm int width getsystemmetrics sm cxscreen int height getsystemmetrics sm cyscreen bm.createcompati...