天嵌 ARM开发社区

 找回密码
 注册
查看: 6481|回复: 16

为啥使用了小图,居中就会花屏啊?

[复制链接]
Michel 发表于 2012-3-8 20:01:01 | 显示全部楼层 |阅读模式
Paint_Bmp(50,3 0, 317, 148, Tu5_480272);
raominping 发表于 2012-3-9 11:57:07 | 显示全部楼层
不会哦。我的就不会,你说的花屏是图片花还是什么?说清楚点哦。最好附图
回复

使用道具 举报

借我你的一生 发表于 2012-3-9 12:18:26 | 显示全部楼层
下载程序前是否格式化了原程序...
回复

使用道具 举报

 楼主| Michel 发表于 2012-3-9 13:14:23 | 显示全部楼层
借我你的一生 发表于 2012-3-9 12:18
下载程序前是否格式化了原程序...

怎么格式化原程序?
回复

使用道具 举报

 楼主| Michel 发表于 2012-3-9 13:15:25 | 显示全部楼层
raominping 发表于 2012-3-9 11:57
不会哦。我的就不会,你说的花屏是图片花还是什么?说清楚点哦。最好附图

就是修改了小图让它居中的时候,显示的就是一条条线
回复

使用道具 举报

 楼主| Michel 发表于 2012-3-9 13:16:18 | 显示全部楼层
raominping 发表于 2012-3-9 11:57
不会哦。我的就不会,你说的花屏是图片花还是什么?说清楚点哦。最好附图

现在用的是Paint_Bmp(50,30, 317, 148, Tu5_480272);
如果用Paint_Bmp(0,0, 317, 148, Tu5_480272);就没有这个问题。。。
回复

使用道具 举报

raominping 发表于 2012-3-9 22:47:54 | 显示全部楼层
本帖最后由 raominping 于 2012-3-9 22:49 编辑
Michel 发表于 2012-3-9 13:16
现在用的是Paint_Bmp(50,30, 317, 148, Tu5_480272);
如果用Paint_Bmp(0,0, 317, 148, Tu5_480272);就没 ...

奇怪了。我用的时候正常哦。亲。你下载到NAND中试试,不要放到死循环里面哦。你要看看是不是什么图片覆盖了。如果可以,把main代码给我看看
回复

使用道具 举报

 楼主| Michel 发表于 2012-3-11 13:09:00 | 显示全部楼层
        while(1)
        {
//                 Paint_Bmp(0, 0, 480, 272, Tu1_480272);
//                 Delay(2500);
//                 Paint_Bmp(0, 0, 480, 272, Tu3_480272);
//         Delay(2500);
        //         Paint_Bmp(0, 0, 480, 272, Tu2_480272);
        //         Delay(2500);
        //          Paint_Bmp(0, 0, 480, 272, Tu4_480272);
        //         Delay(2500);
       
        if (ydata>660)
if (xdata>500) Paint_Bmp(0, 0, 480, 272, Tu1_480272);
else Paint_Bmp(0, 0, 480, 272, Tu2_480272);
else if (ydata<330)
if (xdata>500) Paint_Bmp(0, 0, 480, 272, Tu3_480272);
else Paint_Bmp(0, 0, 480, 272,Tu4_480272);
else
if (xdata>500) Paint_Bmp(0, 0, 480, 272, Tu1_480272);
else

// Lcd_ClearScr1(0,0,480,272);

Paint_Bmp(10, 10, 317, 148, Tu5_480272);
       
回复

使用道具 举报

 楼主| Michel 发表于 2012-3-11 13:09:38 | 显示全部楼层
raominping 发表于 2012-3-9 22:47
奇怪了。我用的时候正常哦。亲。你下载到NAND中试试,不要放到死循环里面哦。你要看看是不是什么图片覆盖 ...

程序如上,你看一下,最后一句
       
回复

使用道具 举报

raominping 发表于 2012-3-11 13:23:15 | 显示全部楼层
Michel 发表于 2012-3-11 13:09
程序如上,你看一下,最后一句

while(1)
        {
//                 Paint_Bmp(0, 0, 480, 272, Tu1_480272);
//                 Delay(2500);
//                 Paint_Bmp(0, 0, 480, 272, Tu3_480272);
//         Delay(2500);
        //         Paint_Bmp(0, 0, 480, 272, Tu2_480272);
        //         Delay(2500);
        //          Paint_Bmp(0, 0, 480, 272, Tu4_480272);
        //         Delay(2500);
        
        if (ydata>660)
if (xdata>500) Paint_Bmp(0, 0, 480, 272, Tu1_480272);//你不觉得少了一个IF吗?后面怎么就else if 了?
else Paint_Bmp(0, 0, 480, 272, Tu2_480272);
else if (ydata<330)                                                            //删掉这个else,明显多于
if (xdata>500) Paint_Bmp(0, 0, 480, 272, Tu3_480272);
else Paint_Bmp(0, 0, 480, 272,Tu4_480272);
else
if (xdata>500) Paint_Bmp(0, 0, 480, 272, Tu1_480272);   //怎么两个else???
else

// Lcd_ClearScr1(0,0,480,272);

Paint_Bmp(10, 10, 317, 148, Tu5_480272);
回复

使用道具 举报

 楼主| Michel 发表于 2012-3-11 13:48:05 | 显示全部楼层
raominping 发表于 2012-3-11 13:23
while(1)
        {
//                 Paint_Bmp(0, 0, 480, 272, Tu1_480272);

if (ydata>660)
                    if (xdata>500) Paint_Bmp(0, 0, 480, 272, Tu1_480272);
                    else Paint_Bmp(0, 0, 480, 272, Tu2_480272);
                  
    else if (ydata<330)
                    if (xdata>500) Paint_Bmp(0, 0, 480, 272, Tu3_480272);
                    else Paint_Bmp(0, 0, 480, 272,Tu4_480272);

   else
                    if (xdata>500) Paint_Bmp(0, 0, 480, 272, Tu1_480272);
                    else Paint_Bmp(10, 10, 317, 148, Tu5_480272);
回复

使用道具 举报

 楼主| Michel 发表于 2012-3-11 13:48:36 | 显示全部楼层
raominping 发表于 2012-3-11 13:23
while(1)
        {
//                 Paint_Bmp(0, 0, 480, 272, Tu1_480272);

现在小图还是花瓶啊
回复

使用道具 举报

飘流Q 发表于 2012-3-11 18:08:25 | 显示全部楼层
我也遇到过,个人觉得是天嵌的其中一个驱动程序,显示如下:
void Paint_Bmp(int x0,int y0,int h,int l,unsigned char bmp[])
{
        int x,y;
        U32 c;
        int p = 0;
       
    for( y = y0 ; y < l ; y++ )
    {
            for( x = x0 ; x < h ; x++ )
            {
                    c = bmp[p+1] | (bmp[p]<<8) ;

                        if ( ( (x0+x) < SCR_XSIZE_TFT) && ( (y0+y) < SCR_YSIZE_TFT) )
                                LCD_BUFFER[y0+y][x0+x] = c ;
                       
                    p = p + 2 ;
            }
    }
}
个人觉得把其中的x0,y0改为0就可以了,否者除非起始位位0,必须花屏。。。
回复

使用道具 举报

飘流Q 发表于 2012-3-11 18:15:37 | 显示全部楼层
哥们,小图不该是480,272的:)
回复

使用道具 举报

Mr_Double 发表于 2012-3-21 13:02:06 | 显示全部楼层
void Paint_Bmp(int x0,int y0,int h,int l,unsigned char bmp[])
{
        int x,y;
        U32 c;
        int p = 0;
        
    for( y = y0 ; y <y0+l ; y++ )
    {
            for( x = x0 ; x < x0+h ; x++ )
            {
                    c = bmp[p+1] | (bmp[p]<<8) ;

                        if ( ( (x) < SCR_XSIZE_TFT) && ( (y) < SCR_YSIZE_TFT) )
                                LCD_BUFFER[y][x] = c ;
                        
                    p = p + 2 ;
            }
    }
}

试试这个吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-17 09:33 , Processed in 2.040039 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表