13851|39

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

大家来聊聊吧,关于wince下做图片浏览器,顺便第一次散分 [复制链接]


靠,为什么我只能给一百分啊!


正在做一个图片浏览程序

目前图片的拖动都是不停的刷DC,在mousemove消息里不停的bitblt

在开发板上 一次bitblt要10多近20毫秒(我用gettickcount测的)

看起来有点闪烁,不是太流畅。

不晓得大家研究过IPHONE没,它那种平滑的图片滑动效果怎么做的呀?
看起来好酷炫的!

大家在自己的项目有弄过没,都来聊聊

最新回复

我做此功能2440上开发的,速度非常快,效果和IPhone差不多。只用了最简单的GDI技术。  详情 回复 发表于 2009-4-13 00:39
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
你别这么做,还是用WMPAINT去画,在MOUSEMOVE当中UPDATEWINDOW。因为你不调BEGINPAINT,的确会相当闪。
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
后面还可以加分的,^_^
BEGINPAINT 和 ENDPAINT好像就是调用了擦除背景的消息
为什么可以避免闪烁啊
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 BEYONDMA 的回复:
你别这么做,还是用WMPAINT去画,在MOUSEMOVE当中UPDATEWINDOW。因为你不调BEGINPAINT,的确会相当闪。


我是这么做的啊,但感觉还是有点闪烁。

说明下 我是用MFC的SDI,在VIEW的OnDraw里画的

在mousemove里 只是准备内存DC,Invalidate(false),然后UPDATEWINDOW

在OnDraw里只是把内存DC的内容拷贝上去
 
 
 

回复

1

帖子

0

TA的资源

禁止访问

5
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
友情up
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

7
 
没做过,帮顶。
是要用双缓存么?
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
顶分!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 6 楼 mouse1984dog 的回复:
没做过,帮顶。
是要用双缓存么?


可以这么说吧

我开了一个主内存DC,

其它内存DC都是往这上面拷贝,然后ONPAIT里再复制到屏幕上
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(初级)

10
 
我之前也做过一个CE下的图片、文档浏览器

有时间的话去看看我这篇blog吧:[url=http://blog.eeworld.net/biaozai06/archive/2008/09/18/2947979.aspx][/url]
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
关注一下
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 
没有做过,关注一下,哈哈。
—————————————
学习
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

13
 
图片显示的快慢,主要原因是你的cpu速度的问题,iphone的内核速度和你的内核速度相差多少,就能大致知道同样刷一屏需要的时间相差多少,如果cpu速度差不多,哪么就是算法问题,lz用的思路是没有问题的,你尝试别用mfc,直接用api去bitblt,lz说了,在拖到图片的时候,闪烁比较明显,那么lz是否已经在启动程序的时候就把整个图片都加入到内存中,然后载内存中进行区域拷贝显示,一般这样做的话,200m以上的cpu应该都没有问题的。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 12 楼 dthxman 的回复:
图片显示的快慢,主要原因是你的cpu速度的问题,iphone的内核速度和你的内核速度相差多少,就能大致知道同样刷一屏需要的时间相差多少,如果cpu速度差不多,哪么就是算法问题,lz用的思路是没有问题的,你尝试别用mfc,直接用api去bitblt,lz说了,在拖到图片的时候,闪烁比较明显,那么lz是否已经在启动程序的时候就把整个图片都加入到内存中,然后载内存中进行区域拷贝显示,一般这样做的话,200m以上的cpu应该都没有问题的。


谢谢你的建议

内核速度差不多的!

拖动图片的时候,图片已经整个加载到内存DC中了

我也怀疑MFC的层层包裹会不会影响程序性能

准备去试试用API画图
 
 
 

回复

14

帖子

0

TA的资源

一粒金砂(中级)

15
 
引用 2 楼 jinlking 的回复:
后面还可以加分的,^_^
BEGINPAINT 和 ENDPAINT好像就是调用了擦除背景的消息
为什么可以避免闪烁啊


BeginPaint()和EndPaint()可以删除消息队列中的WM_PAINT消息,并使无效区域有效;GetDC()和ReleaseDC()并不删除也不能使无效区域有效,因此当程序跳出WM_PAINT时,无效区域仍然存在。
而OnEraseBkgnd()函数会擦除掉无效区域,因此BeginPaint()和EndPaint()可以避免闪烁。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 
估计有点难,即使用双缓冲等方法效果也不见得好到哪里去。我在我的2410上效果比较差,cpu不行。
 
 
 

回复

1

帖子

0

TA的资源

禁止访问

17
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

1

帖子

0

TA的资源

禁止访问

18
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

19
 
个人感觉用MFC和API不会有差别,
因为MFC仅仅是对API进行了一层封装.
比如CDC::Bitblt也是调用的API中的
::Bitblt()函数而已
 
 
 

回复

1

帖子

0

TA的资源

禁止访问

20
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表