如何在windows平台下实现高效绘图、动画效果? 1. iOS用的什么样的绘图方式,效率特别高?2. 我用C#模拟,效率太低,太恶心了。现在改用MFC和GDI+来实现绘图、显示半透明图片、产生动画等一系列操作。现在担心效果可能也不会太好,尤其实现动画时得用定时器,太耗CPU了,达不到iOS的效率。现在请大家给些建议,我应该用什么技术来实现这些效果,而且效率高。Win32API?GDI+?DirectX?OpenGL?我只是单纯进行平面绘图操作,高效率的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 gdi和gdi+显示也不慢到哪里,主要是ms封装好了很多东西,你直接就可以用opengl的话,代码实现较多,主要是要你熟悉它的那套东西,包括坐标,纹理,还需要你会用辅助的一些库才能完成; 那我还是用GDI+吧。如果不用MFC改用win32是不是好得多? GDI支持硬件加速,GDI+不支持。iOS上一般是OpenGL ES作告诉绘图。C#是解释语言,本身就比GDI+慢,所以要想高速绘图,应该用VC MFC(不用.NET托管)配合GDI,要更快,可以用Direct3D8以上或OpenGL。Vista/7的显示驱动模型已经抛弃Direct2D,无法和Aero共存,所以不要再用它。 GDI就搞定了,也就是直接用Win32API,我在WinCE下都这么搞的.Windows的性能就不用说了. openGL es能在windows下开发吗?你的意思是GDI要比GDI+性能高? 现在用GDI,速度还可以,进行双缓冲处理的动画绘制虽然不闪屏,但还是会变慢 GDI或DirectX两者选其一:两种我都用过,DirectX的效率在窗口模式下感觉不比GDI快,而全屏模式比窗口模式几乎快一个数量级,所以如果不是全屏的应用还是GDI吧 推荐DirectX和OpenGL,会比GDI麻烦,但效率很高其实关键还是看你的绘图算法是否高效 你每秒要显示多少帧,我以前用GDI显示每秒25帧视频都没问题 gdi要自己处理透明。gdi+ 不用。dx支持的动画多,也方便。但开源的例子少。如果你很牛可以自己钻研。但其实很不幸的是D3D下的2D贴图需要花费比较大的功夫(如果你没有现成的解决办法)去保证图片不失真。gdi,gdi+ 占用的是cpu.但代码即使写的一般,在极限操作情况下(例如腾讯比较早以前的directui,群列表滚动条猛地拖拉),搞得不好也只是cpu100%而已。后来人家现在不也解决了吗DX占用的是gpu 需要显卡支持。如果你老板对于每台XP机器,或者说你可以解释说我放弃掉不支持DX的机器。那么没问题。(比较囧的一点是,我工作的这台垃圾戴尔就是不支持DX。。任何一个DX程序都初始化失败。)至于巨慢的.net,就不吐槽了。没有指针访问能力的话,gdi+ getpixel 怎么跟getbit比wpf底下也是dx实现的。为了推它的平台,都不开发c++版本,实际上c++更高效,快速。搞得我们都要重复构造轮子。。如果只想简单快速,gdi+ + MFC满足你的要求。如果想要更近一步,gdi+ SDK 可以省去你那个MFC的DLL。也可以抛弃庞大的框架。如果想一劳永逸,DX+SDK 才是你最终的选择。也是目前所有界面库的终极解决方案。 LS:目前界面库没directx的把,directx做出来也不可能就那点效果 汇报一下进度:用MFC + GDI + GDI+混用 主体已经实现的差不多了,主要用的是CImage::Draw(),速度挺快,但是Draw的多了(用在双缓冲时要把好几张png Draw到一张以便合成)就变慢了。 如果觉得png慢,就用bmp,如果又想要alpha通道,就用32位带alpha通道的bmp,如果要alpha混合,可以先Premultiplied Alpha。更快。 带alpha通道的bmp为什么速度更快呢?原理? 如何做个客户端程序,以对局域网内的服务器进行压力测试 msn插件 请教高手们一个关于图象处理的问题,小女子先谢了! _tmain main wmain WinMain等这些函数有什么区别?? 新手请教:如何为按钮编写代码以弹出新的窗口 MFC中,我觉得字体太大,怎么修改啊? 学过VC++和MATLAB接口的请进来!(灌水也有分) 怎么通过调用SDK函数设置麦克风的音量? 高分求解:显示多种文档的方法! VC真他妈的*****,大家请来看看!!! VC6 m_wc4_z2.SetWindowText(ch)偶尔出错问题 编计算器的问题--小数点的函数怎么实现
opengl的话,代码实现较多,主要是要你熟悉它的那套东西,包括坐标,纹理,还需要你会用辅助的一些库才能完成;
那我还是用GDI+吧。
如果不用MFC改用win32是不是好得多?
iOS上一般是OpenGL ES作告诉绘图。
C#是解释语言,本身就比GDI+慢,所以要想高速绘图,应该用VC MFC(不用.NET托管)配合GDI,要更快,可以用Direct3D8以上或OpenGL。Vista/7的显示驱动模型已经抛弃Direct2D,无法和Aero共存,所以不要再用它。
openGL es能在windows下开发吗?
你的意思是GDI要比GDI+性能高?
两种我都用过,DirectX的效率在窗口模式下感觉不比GDI快,而全屏模式比窗口模式几乎快一个数量级,所以如果不是全屏的应用还是GDI吧
其实关键还是看你的绘图算法是否高效
gdi+ 不用。
dx支持的动画多,也方便。但开源的例子少。如果你很牛可以自己钻研。但其实很不幸的是D3D下的2D贴图需要花费比较大的功夫(如果你没有现成的解决办法)去保证图片不失真。gdi,gdi+ 占用的是cpu.但代码即使写的一般,在极限操作情况下(例如腾讯比较早以前的directui,群列表滚动条猛地拖拉),搞得不好也只是cpu100%而已。后来人家现在不也解决了吗
DX占用的是gpu 需要显卡支持。如果你老板对于每台XP机器,或者说你可以解释说我放弃掉不支持DX的机器。那么没问题。(比较囧的一点是,我工作的这台垃圾戴尔就是不支持DX。。任何一个DX程序都初始化失败。)至于巨慢的.net,就不吐槽了。没有指针访问能力的话,gdi+ getpixel 怎么跟getbit比
wpf底下也是dx实现的。为了推它的平台,都不开发c++版本,实际上c++更高效,快速。
搞得我们都要重复构造轮子。。如果只想简单快速,gdi+ + MFC满足你的要求。
如果想要更近一步,gdi+ SDK 可以省去你那个MFC的DLL。也可以抛弃庞大的框架。
如果想一劳永逸,DX+SDK 才是你最终的选择。也是目前所有界面库的终极解决方案。
用MFC + GDI + GDI+混用 主体已经实现的差不多了,主要用的是CImage::Draw(),速度挺快,但是Draw的多了(用在双缓冲时要把好几张png Draw到一张以便合成)就变慢了。
带alpha通道的bmp为什么速度更快呢?原理?