硬汉嵌入式论坛

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

[emWin] 使用 GUI_MEMDEV_CreateFixed 显示位图乱码 ?

[复制链接]

680

主题

3485

回帖

5550

积分

论坛元老

积分
5550
发表于 2018-3-12 14:25:57 | 显示全部楼层 |阅读模式
本帖最后由 hpdell 于 2018-3-12 21:06 编辑

使用 GUI_MEMDEV_CreateFixed 显示位图乱码 ?

是哪个地方没有配置对呀 ??
1.png




下面的图片显示是完整的,但是貌似第4个图片显示的不是透明的,第3、4个图片显示的图片数据是完全一样的,只是使用的函数不同,
1111.png

显示第3、4个图片的使用的函数如下:
    //////////////////////////////方式三/////////////////////////////////
    /* 创建内存设备,并将ARGB8888格式的位图绘制到内存设备上 显示透明效果 */
    hMem2 = GUI_MEMDEV_CreateEx(0, 0, 64, 64, GUI_MEMDEV_HASTRANS);
    GUI_MEMDEV_Select(hMem2);
    GUI_DrawBitmap(&bmpic1, 0, 0);
    GUI_MEMDEV_Select(0);

    /* 显示ARGB8888格式的位图 */
    GUI_DispStringAt("This is ARGB8888 bitmap & GUI_MEMDEV_CreateEx", 100, 410);
    GUI_MEMDEV_WriteAt(hMem2, 20, 380);   //此函数用于将存储设备的内容绘制到 LCD 显示屏上

    ////////////////////////////////方式四///////////////////////////////
    /* 创建内存设备,并将ARGB8888格式的位图绘制到内存设备上 */
    hMem3 = GUI_MEMDEV_CreateFixed(0, 0, 64, 64, GUI_MEMDEV_HASTRANS,
                             GUI_MEMDEV_APILIST_32,
                             GUI_COLOR_CONV_8888);
    GUI_MEMDEV_Select(hMem3);
    GUI_DrawBitmap(&bmpic1, 0, 0);
    GUI_MEMDEV_Select(0);

    /* 显示ARGB8888格式的位图 */
    GUI_DispStringAt("This is ARGB8888 bitmap & GUI_MEMDEV_CreateFixed", 100, 500);
    GUI_MEMDEV_WriteAt(hMem3, 20, 470);    //此函数用于将存储设备的内容绘制到 LCD 显示屏上







0.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115751
QQ
发表于 2018-3-12 15:22:16 | 显示全部楼层
方便的话,把你的图片和代码上传下,仅emWin的图片显示代码即可,我试试看。
回复

使用道具 举报

680

主题

3485

回帖

5550

积分

论坛元老

积分
5550
 楼主| 发表于 2018-3-12 15:46:01 | 显示全部楼层
eric2013 发表于 2018-3-12 15:22
方便的话,把你的图片和代码上传下,仅emWin的图片显示代码即可,我试试看。

你好,现在已经上传了,麻烦测试看看

MainTask - 副本.rar (27.76 KB, 下载次数: 89)


回复

使用道具 举报

680

主题

3485

回帖

5550

积分

论坛元老

积分
5550
 楼主| 发表于 2018-3-12 16:47:11 | 显示全部楼层
本帖最后由 hpdell 于 2018-3-12 21:07 编辑

我刚刚是用 vc++ 6仿真显示貌似没有问题啊
仿真结果如下:

2.png

估计应该还是我的底层驱动有问题吧 ??










回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115751
QQ
发表于 2018-3-13 02:04:36 | 显示全部楼层
帮你在我们V6板子上面测试了下,没问题

QQ截图20180313020310.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115751
QQ
发表于 2018-3-13 02:06:01 | 显示全部楼层
第四个是正常的,因为这是存储设备的绘制方式,背景默认就是黑色的。你可以将背景随意绘制成其它的颜色。
回复

使用道具 举报

680

主题

3485

回帖

5550

积分

论坛元老

积分
5550
 楼主| 发表于 2018-3-13 09:26:35 | 显示全部楼层
eric2013 发表于 2018-3-13 02:06
第四个是正常的,因为这是存储设备的绘制方式,背景默认就是黑色的。你可以将背景随意绘制成其它的颜色。

你好,我移植后使用的是 STemWin540_CM4_OS_IAR_ARGB.a 的库,

吧 /* 0. 在官方代码的基础上再做优化,官方的部分函数效率低,耗内存, 0表示优化 */
#define emWin_Optimize   1  这个宏定义改成 1 后,第四个图片可以显示了,但是显示出来的图片边缘上有白点及图片背景色变成了黑色,
使用第4个方法绘制图片时,背景色的混合是在哪个函数里面进行的啊 ? ???
另外优化设置为 1 后,显示图片边缘有白色点出现是怎么回事啊 ????

显示效果如下:
优化关闭.png



#define emWin_Optimize  0 这个宏定义改成 0后,第四个图片显示就不正常了,而且背景色也是黑色 ?
但是前面的3个图片显示效果很好,图片上没有白色的点出现
效果如下:
优化打开.png




回复

使用道具 举报

680

主题

3485

回帖

5550

积分

论坛元老

积分
5550
 楼主| 发表于 2018-3-13 20:45:06 | 显示全部楼层
本帖最后由 hpdell 于 2018-3-13 20:49 编辑
eric2013 发表于 2018-3-13 02:06
第四个是正常的,因为这是存储设备的绘制方式,背景默认就是黑色的。你可以将背景随意绘制成其它的颜色。

我把vc++ 6仿真的背景色改成了蓝色,
出现的结果跟实际显示的结果基本差不多了,第四个也是黑色的背景了,不过仿真时第3个图片怎么也会出现 黑色的背景啊 ??
vc++ 6仿真结果如下:
33333.png


现在 lcd 显示效果如下:

1112.png












回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115751
QQ
发表于 2018-3-14 02:03:00 | 显示全部楼层
hpdell 发表于 2018-3-13 20:45
我把vc++ 6仿真的背景色改成了蓝色,
出现的结果跟实际显示的结果基本差不多了,第四个也是黑色的背景了 ...


第四个是正常的,因为这是存储设备的绘制方式,背景默认就是黑色的。你可以将背景随意绘制成其它的颜色。
回复

使用道具 举报

680

主题

3485

回帖

5550

积分

论坛元老

积分
5550
 楼主| 发表于 2018-3-14 09:32:21 | 显示全部楼层
eric2013 发表于 2018-3-14 02:03
第四个是正常的,因为这是存储设备的绘制方式,背景默认就是黑色的。你可以将背景随意绘制成其它的颜色 ...

你好,那这个背景色在哪里可以修改啊 ?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-16 07:53 , Processed in 0.251876 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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