PCtoLCD2002输出十六进制的字符数组unsigned char,但头文件定义的函数只能识别二进制数组, 一个一个手改太麻烦,怎样修改头文件让它直接读取unsigned char?
void N5110::drawSprite(int x0,
int y0,
int nrows,
int ncols,
int *sprite)
{
for (int i = 0; i < nrows; i++) {
for (int j = 0 ; j < ncols ; j++) {
int pixel = *((sprite+i*ncols)+j);
setPixel(x0+j,y0+i, pixel);
}
}
}
可以用宏来替换,或者再定义一个函数包装下,转换参数类型,再调用实际的函数
点阵字体显示的函数,注意字库的采样顺序,一般的点阵字库都是从左到右,从上到下描点,示例如下:
/* 传入sprite为点阵字库CHAR型指针,nrows要被8整除,否则自己修改偏移 */
void N5110::drawSprite(int x0, int y0, int nrows, int ncols, char *sprite)
{
int i = 0, j = 0;
unsigned char pixel = 0;
for (int i = 0; i < nrows; i++)
{
for (int j = 0 ; j < ncols ; j++)
{
pixel = *(sprite + (i*ncols+j)/8); /* 一个字节8个点 */
if((pixel & (0x80 >> ((i*ncols+j) % 8))) != 0) /* 从左到右描点 */
{
setPixel(x0+j,y0+i, 1); /* 画点 */
}
else
{
setPixel(x0+j,y0+i, 0); /* 画空白 */
}
}
}
}
在参数一传进来的时候自己加一个数据类型转换就行了吧,根据自己的需要改就行了