WINCE之绘图显示效率对比

原创 2011年01月11日 11:06:00

  

 

GDI操作过程:往窗口的DC上以红绿蓝三种颜色分别画255根渐变的竖线。如图

 

显示结果:

设备兼容位图DDB:BitBlt use tickcount is 13
DIB位图(格式不兼容):StretchDIBits use tickcount is 184 
rgb565 DIB位图: 16BPP StretchDIBits use tickcount is 12
RGB565 DIB位图: 16BPP BitBlt use tickcount is 13
直接写屏:FrameBuffer use tickcount is 9

 

结论:创建DDB位图与DIB位图,在贴图时的速度是一样的。唯一区别就是如果创建的DIB位图必须要与驱动里的位图格式一样,包括BIT_MASK的格式一样,也就是驱动里为RGB565的格式,应用里创建的位图也应该是RGB565的DIB位图,否则在BITBLT时驱动里会做一个RGB的转换,导致画图速度很慢,而创建DDB位图是不存在这种问题的,在速度上是不会慢的。

 

全部GDI操作的时间统计结果(只包括GDI操作,创建画笔,MOVETOEX,LINETO,SelectObject,BitBlt等,不包括位图创建,DC创建等):

BitBlt use tickcount is 443
StretchDIBits use tickcount is 610
 16BPP StretchDIBits use tickcount is 438
 16BPP BitBlt use tickcount is 439
FrameBuffer use tickcount is 116

 

结论:使用GDI时,前四种情况下的速度是一样的,与位图的格式无关,只是使用BitBlt时会因为位图格式不兼容造成很大性能损失。

但是如果使用直接写屏的操作可以把简单的GDI函数调用转换为纯粹的内存赋值操作,这种操作可以省掉很多时间。实际上可以用DIB位图来进行这种操作,直接针对DIB位图的内存数据写值来实现GDI的操作。

把16BPP的BitBlt修改为直接内存写值的操作,时间结果为:

BitBlt use tickcount is 442
StretchDIBits use tickcount is 611
 16BPP StretchDIBits use tickcount is 441
 16BPP BitBlt use tickcount is 106
FrameBuffer use tickcount is 104

由此可见,这种情况下与直接写屏的效率是一样的,对于频繁的GDI操作绘图,重写GDI的API调用可以节省不少的时间,前提就是使用与显示驱动兼容的DIB位图,然后直接对位图数据写值。

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

WINCE之绘图显示效率对比

文章来源:http://blog.csdn.net/zjh824/article/details/6128554 [cpp] view plaincopy ...
  • libaineu2004
  • libaineu2004
  • 2015年09月21日 08:50
  • 875

用VC写高效的图像处理程序

用VB写高效的图像处理程序     选择自 zyl910 的 Blog 一、为什么这么慢?   自盘古开天...
  • jianxiong8814
  • jianxiong8814
  • 2007年04月24日 15:00
  • 5218

WINCE的控件背景透明、渐变的个人小结

     元旦到了,首先祝各位新年快乐!元旦前的这个星期学习的资料和小结,希望对大家有用。欢迎拍砖!补上参考例子下载地址(forfree):http://hi.csdn.net/link.php?ur...
  • wo65432519
  • wo65432519
  • 2010年01月01日 19:35
  • 6685

WINCE之绘图显示效率对比

文章来源:http://blog.csdn.net/zjh824/article/details/6128554 [cpp] view plaincopy ...
  • libaineu2004
  • libaineu2004
  • 2015年09月21日 08:50
  • 875

WINCE应用程序全屏显示

WINCE应用程序全屏方法 1、全屏显示,不显示标题栏,但是有任务栏 在WINCE中实现全屏的方法,在Dlg的OnlnitDialog()里加入以下代码: CRect m_FullScreenR...
  • feilongzaitianhehe
  • feilongzaitianhehe
  • 2015年08月25日 21:14
  • 1177

WinCE下数字键盘

最近正在开发一个移动数据采集系统,其中涉及到了数据的录入功能,先开始直接调用的是系统自带的拼音键盘,如下图所示。                     在实际的试运行过程中,用户觉得单纯录入数字,...
  • qiujialongjjj
  • qiujialongjjj
  • 2013年01月11日 09:11
  • 3770

wince隐藏任务栏与去除桌面图标 快捷方式

有的时候在系统启动之后,不希望看到wince的桌面和任务栏,也就是不希望用户看到wince系统界面。这就要隐藏任务栏,去除桌面的快捷方式,以及输出文本。        如,现在桌面的情况如图: ...
  • lianglf2218
  • lianglf2218
  • 2015年07月07日 10:03
  • 388

WinCE下开发程序常见问题

一. wince中,如何根据进程名称获得该进程ID DWORD GetProcessID(CString name) {     HANDLE procSnap = CreateTo...
  • wander_wang
  • wander_wang
  • 2015年06月06日 14:29
  • 2100

WINCE6.0下开始菜单的“挂起(suspend)”是否可见及阻止系统进入睡眠模式

原文地址::http://blog.csdn.net/loongembedded/article/details/6715980 相关网帖 1、
  • xqhrs232
  • xqhrs232
  • 2014年11月03日 17:58
  • 1124

VC/Wince 实现仿Win8 Metro风格界面1——设计概述和自绘Button

转载:http://www.chawenti.com/articles/16008.html     去年用VC做了一个仿Win8 Metro风格的界面,感觉挺有意思,最近打算把实现...
  • u013097730
  • u013097730
  • 2014年09月14日 13:02
  • 832
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WINCE之绘图显示效率对比
举报原因:
原因补充:

(最多只允许输入30个字)