小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

WINCE 開機logo圖片轉(zhuǎn)C工具,自制

 yyy2k3 2012-08-16

經(jīng)過幾天的資料收集和編寫,完成了24位圖片轉(zhuǎn)unsigner short 型數(shù)組的程序,具體設(shè)計方案和部分實現(xiàn)分析如下:

1.資料來源:參考embeded bbs論壇上提供的圖片轉(zhuǎn)數(shù)組BMP2C程序改寫。

2.軟件開發(fā)基于的開發(fā)環(huán)境和語言:os基于XP SP2  語言C++ 開發(fā)環(huán)境VS2005 VC++

3.設(shè)計思路:

   3.1 通過調(diào)用WIN32 內(nèi)部類BITMAPFILEHEADER 對讀取的圖片文件進行分析處理;
   3.2 通過CFile類對文件實現(xiàn)打開讀取修改;
   3.3 通過使用BITMAPFILEHEADER.biBitCount函數(shù)實現(xiàn)對圖片位數(shù)的獲取并分析是否是24位色圖,如不是提示用戶重新處理圖片;
   3.4 通過565方式改寫圖片信息,同時通過寫文件將數(shù)值寫入相應(yīng)文件中。
   3.5 整個過程是通過讀文件和寫文件方式實現(xiàn)。

4.主要算法:

   4.1 565圖片處理部分

for(int j = 0 ; j < bmInfo.biWidth ; j++)  
 
{     // 讀取象素的值    
BYTE byBlue, byGreen, byRed;
    fileInput.Read(
&byBlue, sizeof(BYTE));
    fileInput.Read(
&byGreen, sizeof(BYTE));  
   fileInput.Read(
&byRed, sizeof(BYTE));        // 以 5:6:5 模式合成16位值  
  byRed = byRed * 0x1F / 0xFF;  
  byGreen 
= byGreen * 0x3F / 0xFF;   
 byBlue 
= byBlue * 0x1F / 0xFF;   
 unsigned 
short nValue = 0x0000;   
 nValue 
= byRed << 11 | byGreen << 5 | byBlue;    /* 寫入數(shù)組 */    // 8個數(shù)據(jù)就換一行 
   if(j % 8 == 0)   
 
{   
  strInfo 
= _T("    ");  
   fileOutput.Write(strInfo.GetBuffer(strInfo.GetLength()), strInfo.GetLength());    
 strInfo.ReleaseBuffer();    
}
    // 寫入數(shù)據(jù)  
  strInfo.Format(_T("%#.4X, "), nValue);    fileOutput.Write(strInfo.GetBuffer(strInfo.GetLength()), strInfo.GetLength());    strInfo.ReleaseBuffer();   
4.2 Bmp2array(void)函數(shù)整體定義部分

 

// 得到輸入文件    
CString strInput;    
m_editInput.GetWindowText(strInput);    
// 得到輸出文件
    CString strOutput;    
m_editOutput.GetWindowText(strOutput);    
    TRY    
{        // 打開輸入文件        
    CFile fileInput;        
if(!fileInput.Open(strInput, CFile::modeRead))    
    
{