s32 devLcdDispHxLogo(u32 uiX, u32 uiY, u8 *pucLogoBitmap, u32 uiLogoWidth,
u32 uiLogoHeight)
{
s32 iRet = 0;
u32 i, j, k;
u8 ucBitMask[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
do
{
if((pucLogoBitmap == NULL) || (uiLogoWidth % 8))
{
iRet = SDK_PARAMERR;
}
for (j = 0; j < uiLogoHeight; j++)
{
for (i = 0; i < uiLogoWidth/8; i++)
{
for (k = 0; k < 8; k++)
{
if (pucLogoBitmap[j * uiLogoWidth/8 + i] & ucBitMask[k])
{
devBWSetPixel(uiX+i*8+k, uiY+j, 1);
}
else
{
devBWSetPixel(uiX+i*8+k, uiY+j, 0);
}
}
}
}
devLcdBrushArea(uiX, uiY, (uiX+uiLogoWidth-1), (uiY+uiLogoHeight-1));
iRet = SDK_OK;
}while(0);
return iRet;
}
//x坐标,y坐标,图片取模数据,图片宽,高(单位:像素点)
void DispVerticalBitmap(u32 uiX, u32 uiY, u8 *pucBitmap, u32 uiWidth, u32 uiHeight)
{
u32 i, j, k;
u8 ucBitMask[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
// 宽度
for(i = 0; i < uiWidth; i++)
{
// 高度
for(j = 0; j < uiHeight/8; j++)
{
// 点
for(k = 0; k < 8; k++)
{
if (pucBitmap[j * uiWidth + i] & ucBitMask[k])
{
devBWSetPixel(uiX+i, uiY+j*8+k, 1);
}
else
{
devBWSetPixel(uiX+i, uiY+j*8+k, 0);
}
}
}
//剩余非8倍数 行显示
if (uiHeight % 8)
{
// 点
for(k = 0; k < uiHeight % 8; k++)
{
if (pucBitmap[j * uiWidth + i] & ucBitMask[k])
{
devBWSetPixel(uiX+i, uiY+j*8+k, 1);
}
else
{
devBWSetPixel(uiX+i, uiY+j*8+k, 0);
}
}
}
}
devLcdBrushArea(uiX, uiY, (uiX+uiWidth-1), (uiY+uiHeight-1));
}
TFT屏取点阵数据思路(图片取模数据)
于 2023-07-25 15:22:12 首次发布