valon 发表于 2018-6-4 13:33 底层驱动有问题吧 |
valon 发表于 2018-6-4 13:33 你参考一下emwin扩展历程里的bmp图片显示实验,对你有帮助,我的函数就是从那里抠出来的 |
hanzixi_angel 发表于 2018-6-4 11:43 我发现一个很大的问题啊,就是在驱动中绘制bitmap图像的函数是 _DrawBitmap,而我在绘图的时候是一行行调用的,也就是说我800像素高,这个函数调用了800次 ,所以导致绘制很慢,这是什么情况啊啊 而且放入存储设备也一样 |
kbq1950361006 发表于 2018-6-4 11:51 我发现一个很大的问题啊,就是在驱动中绘制bitmap图像的函数是 _DrawBitmap,而我在绘图的时候是一行行调用的,也就是说我800像素高,这个函数调用了800次 ,所以导致绘制很慢,这是什么情况啊啊 ![]() |
| 分享一个好的图片网站,各种格式全都有,超级给力http://wallpaperswide.com |
valon 发表于 2018-6-4 11:34 sdram时钟是108M的,你这个现象是没开启多层缓冲,WM_SetCreateFlags(WM_CF_MEMDEV); 你在初始化emwin之后开启这个,然后分配给emwin大一点的sdram内存,最少也要2M,就看不出来刷新了。还有,我的bmp图片也是越大越慢,建议你把bmp图片压缩一下位数,我用4位的,很低很低了,你可以试试32,或者16位的,256位的图片效果虽然好但是影响速度,还有你可以试试楼上兄弟说的方式,很快的 |
hanzixi_angel 发表于 2018-6-4 10:42 非常感谢大兄弟,我先在解决了显示背景问题,方式有两种可以用一个是你这个方式,还有一个就是我之前的方式,后来把emwin的内存扩大了一些,原来有两个工程忘记去掉一个,导致一些莫名的现象字库消失问题,图片问题也顺带着解决了,现在切换界面不会看到屏幕刷新照片了,很快,看着舒服多了。再次感谢兄弟,你说的方式我刚刚看了一个帖子,讲的也很全面http://blog.sina.com.cn/s/blog_98ee3a930102wn6q.html |
valon 发表于 2018-6-4 11:34 你放到存储设备里面吧 这样刷新会很快 800*480的图片应该在15ms左右 |
valon 发表于 2018-6-4 11:39 SDRAM绝对跟得上你的刷新速度了 你刷图慢应该是刷新方式有问题 是用位图吗 还是直接解码图片刷新 直接解码图片速度慢 |
hanzixi_angel 发表于 2018-6-4 10:42 sdram的速度会不会太慢,影响刷新速度?我429刷一个1.4M的BMP流图片要大概1s... |
兄dei 你这是sdram时钟频率是多少 ? 我用的429刷一个480*800的屏,就算先保存到sdram,显示bmp的时候很明显看出一行行刷新 。刷一个1.4M大小的BMP图片要大概1s![]() |
kbq1950361006 发表于 2018-6-4 09:51 从flash中把.dta数据读到一个buf里,使用函数GUI_CreateBitmapFromStream(&DeskTop_Back, &Palette, DeskTop_Buf);转换成位图;然后使用GUI_DrawBitmap(&DeskTop_Back, 0, 0);就可以显示位图图片了 这种方式显示非透明的图片是非常快的 |
hanzixi_angel 发表于 2018-6-3 10:45 也是,我spiflash就用了字库,还有存一些数据,其实也可以不用文件系统,但是我这个用文件系统好管理一些,所以就用了,兄弟我现在还有一个问题,就是请问一下你是怎么把spiflash里的dta数据读到sdram里在显示了,这点我不太懂,麻烦兄弟指导一下啦 |
kbq1950361006 发表于 2018-6-3 00:31 我没有使用文件系统 当时使用文件系统也是可以的 spi flash速度太慢 而且不太稳定 就放弃了 想这些系统级的文件 比如字库背景图片啥的一般都很少更改 所以没必要采用文件系统 一般都是出厂的时候烧写到特定的地址就不再动他了 以后都是开机读取就可以了 |
hanzixi_angel 发表于 2018-6-2 18:37 兄弟,我今天试着把图片转成了dta格式的,请问是这个文件放在spiflash里就行吗,用文件系统吗?然后程序里怎么读出这个图片数据,我这点有点没想通,麻烦兄弟了 |
hanzixi_angel 发表于 2018-6-2 18:37 刚刚没看见这个回复,sorry,你这个方式肯定快,但是我们用的方式好像不太一样,我没有用底层的背景,我是建立一个Window窗口作为第一层背景的,其他界面就是这个层的子窗口,都是第二层,所以我切换界面就需要刷新背景图片,我试试你的方式,感谢感谢 |
hanzixi_angel 发表于 2018-6-2 18:38 是呀,我先在方式就是读取spiflash里的bmp图片,bmp图片的位数被我改到很低才实现速度能好一些,图片是4位色的,,大神在给点建议能提高质量和速度,感激不尽 |
kbq1950361006 发表于 2018-6-1 18:06 150ms还是有点慢 |
kbq1950361006 发表于 2018-6-1 16:00 我是把图片用官方工具直接转成了位图文件 .dta文件 保存到外部flash 开机读取到外部SDRAM中 然后显示直接显示位图就可以了 使用的rgb库 只需要6-7ms就可以显示一张480*272的图片 我背景图片只在WM_HBKWIN中的WM_PAINT刷新 其他所有的界面都不在刷新 这样可以节省很多cpu时间 |
hanzixi_angel 发表于 2018-6-1 14:39 我现在开启了加载位图显示了,用spiflash存储bmp图片,效果还可以,也很快,请问你第二种方式把图片放到spiflash里是用文件系统,放bmp图片进去吗?还是把图片的数组数据放进去在读出来用 还有一个多余的小问题,请问你在用一个新窗口的时候加载背景图片时是在WM_PAINT这个条件里吗,我不确定我用方式的对不对 |
|
本帖最后由 hanzixi_angel 于 2018-6-1 14:40 编辑 加载到存储设备可以解决你这问题 加载到存储设备显示需要10ms 另外就是把图片转化位位图保存到spi flash里面 直接读取到内存显示也可以 都是非常快的 我目前使用的第二种方案 显示一张480*272的位图需要6-7ms 原来直接显示图片需要500ms左右 |
只能做到这样的效果了,研究了一天,先不弄这了,感觉这是我目前的极限了![]() |
8.64 MB, 下载次数: 112
/1
|手机版|OpenEdv-开源电子网
( 粤ICP备12000418号-1 )
GMT+8, 2026-7-25 00:56
Powered by OpenEdv-开源电子网
© 2001-2030 OpenEdv-开源电子网