主题 : 2440test中的LCD显示图片函数 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 17308
精华: 0
发帖: 50
金钱: 250 两
威望: 50 点
综合积分: 100 分
注册时间: 2010-03-27
最后登录: 2012-11-13
楼主  发表于: 2010-08-14 15:09

 2440test中的LCD显示图片函数

static void Paint_Bmp(int x0,int y0,int h,int l,const unsigned char *bmp)
{
    int x,y;
    U32 c;
    int p = 0;
    
    for( y = 0 ; y < l ; y++ )
    {
        for( x = 0 ; x < h ; x++ )
        {
            c = bmp[p+1] | (bmp[p]<<8) ;

            if ( ( (x0+x) < SCR_XSIZE) && ( (y0+y) < SCR_YSIZE) )
                LCD_BUFFER[y0+y][x0+x] = c ;

            p = p + 2 ;
        }
    }
}
从表面上看好像是正确的,不过画出的图形确是2*x和2*y位置的。有没有高手能解释一下为什么?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2010-08-14 18:13
这个函数你是怎么调用的?把源代码贴出来
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 17308
精华: 0
发帖: 50
金钱: 250 两
威望: 50 点
综合积分: 100 分
注册时间: 2010-03-27
最后登录: 2012-11-13
2楼  发表于: 2010-08-15 09:45
extern const unsigned char svc_state_open[];
Paint_Bmp(20, 30, 24+20, 24+30, svc_state_open);
只要坐标不是原点的话,图片就不在我要的位置上面。而是每个坐标都乘以2.
级别: 侠客
UID: 17308
精华: 0
发帖: 50
金钱: 250 两
威望: 50 点
综合积分: 100 分
注册时间: 2010-03-27
最后登录: 2012-11-13
3楼  发表于: 2010-08-15 14:52
也就是说,如果是下面的调用,就会看不见图片。
Paint_Bmp(120, 160, 24+120, 24+160, svc_state_open);
级别: 侠客
UID: 17308
精华: 0
发帖: 50
金钱: 250 两
威望: 50 点
综合积分: 100 分
注册时间: 2010-03-27
最后登录: 2012-11-13
4楼  发表于: 2010-08-17 15:26
有没有高手给解决一下。