双缓存画图多了(画很多线条)为什么CPU的使用率会飚到50以下

双缓存画图多了(画很多线条)为什么CPU的使用率会飚到50以上
本帖最后由 nabasasun 于 2013-02-08 23:54:01 编辑
而且,是越画越卡
这还是用GDI的函数去画的(有锯齿),还不是GDI+(圆滑会吃资源)的
这样怎么行?
人家mspaint(XP自带画图工具) 怎么画都是使用3%到4%而已。

------解决方案--------------------
代码问题呗,主要是资源没释放。

可能内存不足然后就和硬盘交互
------解决方案--------------------
可能性太多了,比如你保存的是矢量信息,而显示逻辑又不干净,还用的Debug模式,更悲催的是你并不是在内容更改的时候重绘,而是定是想游戏一样死循环更新...
------解决方案--------------------
GDI+纯软件处理图形运算,它的存在本身就是个BUG,如果不考虑Windows XP完全可以用Direct2D。

忘了GDI+的那几个抗拒模式都是什么了,抗锯齿不管用什么方法最终都是要算或者估算相关像素所在的矩形区域被图形占用了多大的比例从而决定透明度然后进行混合。不抗锯齿的话只需要判断图形是不是在一个像素的区域内出现。这两个运算速度差十倍并不是什么怪事。
------解决方案--------------------
你可以考虑把图缓冲成位图,而不是每次重绘都把每条线都画一遍。另外注意画位图一定要要用GDI画而不是GDI+画。

GDI+是走CPU的 GDI和Direct2D是走显卡的,前者是不可能有什么效率可谈的。
------解决方案--------------------
为什么一定只看我一半的话呢。GDI+怎么提高速度我已经说了。

又要速度 又要效果 还要支持XP的话... 你可能只好用Direct3D自己慢慢实现各种功能了
------解决方案--------------------
根本没好好看你怎么就知道用不上呢?
------解决方案--------------------
没有好办法,GDI+就是慢,少量的图表办公什么的GDI+不错,还省事儿。
真要是想要有速度的图形图像就放弃GDI+吧。