⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui_bmp.c

📁 用SMART2200低成本的实现OV9650摄像头驱动
💻 C
字号:
/****************************************************************************************
* 文件名:GUI_BMP.C
* 功能:位图显示。
* 作者:LYP
* 日期:2009.3.30
* 备注:
************************************************************************************/
#include  "config.h"
#if  (GUI_WINDOW_EN==1)|(GUI_MenuIco_EN==1)|(GUI_MenuDown_EN==1)|(GUI_LoadPic_EN==1)

extern uint16  GUI_Color2Index_565(uint32 colorRGB); 
/****************************************************************************
* 名称:LoadBitmapFromMem()
* 功能:装载BMP文件。
* 入口参数:
* 出口参数:无
* 说明:
****************************************************************************/
 void LoadBitmapFromMem (PBITMAP bmp, const uint8* mem, uint32 size)
{  
   uint8 PosPixel;  
 
   bmp->bmType=mem[0]+(mem[1]<<8);//判断图像类型
   bmp->bmBitsPerPixel=mem[28];//每个像素的位数
  if(bmp->bmBitsPerPixel%8==0)  //每个像素的BYTE
   bmp->bmBytesPerPixel=bmp->bmBitsPerPixel/8;
  else
   bmp->bmBytesPerPixel=bmp->bmBitsPerPixel/8+1;
   bmp->bmWidth=mem[18]+(mem[19]<<8)+(mem[20]<<16)+(mem[21]<<24);//像素宽度
   bmp->bmHeight=mem[22]+(mem[23]<<8)+(mem[24]<<16)+(mem[25]<<24);/* 像素高度,正:由下向上,负:由上至下 */  
   
   PosPixel=mem[10];
   bmp->bmBits=(uint8 *)mem+PosPixel;//像素矩阵的基指针
   bmp->bmPitch=size;//位图文件大小
}

/****************************************************************************
* 名称:FillBoxWithBitmap()
* 功能:显示BMP文件。
* 入口参数:
* 出口参数:无
* 说明:
****************************************************************************/
 int FillBoxWithBitmap (int x, int y,  BITMAP* pBitmap)
{ uint32   RGB_dat;
  uint8   i, j,*bmBitsBuf;
  TCOLOR  bakc; 
  
  if(x>GUI_LCM_XMAX|y>GUI_LCM_YMAX|((pBitmap->bmWidth)+x)>GUI_LCM_XMAX|((pBitmap->bmHeight)+y)>GUI_LCM_YMAX)return(0);//判断显示范围有无溢出
  bmBitsBuf = pBitmap->bmBits;  //暂存像素指针
 
  for(i=pBitmap->bmHeight;i>0;i--)//从最下面行往上扫描
  {
    for(j=0;j<pBitmap->bmWidth;j++)//从左向右扫描
    {
    RGB_dat=((*(pBitmap->bmBits+2)<<16)+(*(pBitmap->bmBits+1)<<8)+(*(pBitmap->bmBits)<<0)); //从BGR像素矩阵获得RGB
    pBitmap->bmBits+=3;//指向下一个像素 
    bakc=GUI_Color2Index_565(RGB_dat);//将24位RGB数据转化为16位索引值
    GUI_Point(j+x, i+y, bakc);
    }
  }
    pBitmap->bmBits = bmBitsBuf;//恢复像素指针
    return(1);
}    
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -