硬汉嵌入式论坛

 找回密码
 立即注册
查看: 564|回复: 3
收起左侧

[emWin] 请教显示位图时黑线问题

[复制链接]

3

主题

6

回帖

15

积分

新手上路

积分
15
发表于 2022-10-11 17:01:40 | 显示全部楼层 |阅读模式
emwin +屏1024*600,当显示大的位图时 出现图片中的黑线,黑线位置随机,请教大神指导排查思路。
QQ截图20221011165748.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2022-10-12 00:42:58 | 显示全部楼层
LTDC的极性配置有问题,有时候会出现这个情况。
回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2022-10-12 08:03:26 | 显示全部楼层
eric2013 发表于 2022-10-12 00:42
LTDC的极性配置有问题,有时候会出现这个情况。

谢谢大神,今天先排查看看
回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2022-10-12 11:03:58 | 显示全部楼层
eric2013 发表于 2022-10-12 00:42
LTDC的极性配置有问题,有时候会出现这个情况。

今天早上做了一下实验,位图不放在回调里面刷屏没出现黑线程序如下:
while(1)
        {
                HMemBj = LoadFile("resource/index/index.dta"); //装载新窗口的背景
                CreateBitMapFromFile(HMemBj, &BitmapBj, &PaletteBj);
                GUI_DrawBitmap(&BitmapBj, 0, 0);
                GUI_Delay(10000);
                DestroyBitMap(HMemBj);
                GUI_Clear();
                HMemBj = LoadFile("resource/singlesync/singlesync.dta"); //装载新窗口的背景
                CreateBitMapFromFile(HMemBj, &BitmapBj, &PaletteBj);
                GUI_DrawBitmap(&BitmapBj, 0, 0);
                GUI_Delay(10000);
                DestroyBitMap(HMemBj);
                GUI_Clear();
        }
把位图放在回调里面刷屏,就出现了图中的黑线,程序如下:
while(1)
        {
                if(flag == 0)
                {
                        flag = 1;
                        HMemBj = LoadFile("resource/index/index.dta"); //装载新窗口的背景
                        CreateBitMapFromFile(HMemBj, &BitmapBj, &PaletteBj);

                }
                else
                {
                        flag = 0;
                        HMemBj = LoadFile("resource/singlesync/singlesync.dta"); //装载新窗口的背景
                        CreateBitMapFromFile(HMemBj, &BitmapBj, &PaletteBj);
                }
                WM_InvalidateWindow(WM_HBKWIN);
                GUI_Delay(10000);
                DestroyBitMap(HMemBj);
        }

//回调如下:
static void _cbBk(WM_MESSAGE *pMsg)
{
        switch (pMsg->MsgId)
        {
        case WM_PAINT:
                GUI_Clear();
                GUI_DrawBitmap(&BitmapBj, 0, 0);
                break;
        default:
                WM_DefaultProc(pMsg);
                break;
        }
}

请问这两种方式有什么区别吗?是我刷得方式不对还是什么配置的问题。
我配置开启存储设备,屏幕大小1024*600. 内存使用外部SDRAM,大小12M。
请大神帮我再分析一下。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 23:08 , Processed in 0.193040 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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