首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

怎么旋转位图(HBITMAP),高分请问

2012-02-17 
如何旋转位图(HBITMAP),高分请教如题,不知道有没有什么现成的函数?有什么好的资料吗?先谢谢了[解决办法]II

如何旋转位图(HBITMAP),高分请教
如题,
不知道有没有什么现成的函数?
有什么好的资料吗?
先谢谢了

[解决办法]
IImage
[解决办法]
旋转算法到处都是,你直接转DIB就行了。
[解决办法]
少人是因为你这问题实在没啥意思。

这种问题,在网上搜索一下,有几千个答案。
[解决办法]
没有现成的函数,算法和代码到处都有
[解决办法]

探讨
没有现成的函数,算法和代码到处都有

[解决办法]
你用函数PlgBlt()你自己看看函数传入的3个POINT点参数不同就可以达到旋转的效果的 不过精确度一般
[解决办法]
探讨
引用:
少人是因为你这问题实在没啥意思。

这种问题,在网上搜索一下,有几千个答案。

----------------------------------
但是那些算法效率太低了,我旋转一个500x400的图片要6,7秒啊,
这么慢远远达不到要求
我想问的是有没有高效的算法

[解决办法]
探讨
引用:
少人是因为你这问题实在没啥意思。

这种问题,在网上搜索一下,有几千个答案。

----------------------------------
但是那些算法效率太低了,我旋转一个500x400的图片要6,7秒啊,
这么慢远远达不到要求
我想问的是有没有高效的算法

[解决办法]
就是浮点换整数,内存换速度的优化技术,网上到处都是-_-0

1.对于0,90,180,270,360之类的角度,何必再去调用sin cos等函数计算位置?直接用整数值代替就行了,你不觉得调用数字计算比调用函数会快一点吗,何况要调用500x400x3次?

2.类似取sin(1)~sin(360)之类的公式,完全可以用一个360个元素的整数数组替代。浮点可采用近似整数值替代或者用更好的转整数算法。

3.内存操作优化。

4.流水线优化。

5.函数级优化

等等还有很多地方可以优化,没事多看书吧,写软件没看过内存及代码优化技术的书是不行的。


[解决办法]
我把NBCOOL老大的话补充说明一下:)你就是用一张有360个元素的表代替SIN COS的运算,比如你求SIN(1)的话就直接查表了,而不是用math.h当中的SIN去算:)然后看下有关的资料是不是并根据相应的情况,看看到底是内存重要还是效率重要。做下优化。
另外提醒一下,尽量不要过于频繁的NEW DELETE,那样内存碎片太多,反而不好。
[解决办法]
探讨
经过优化,速度大大提高了,
500*400的图片1秒了,2592*3800的也才3秒左右

再次感谢nbcool BEYONDMA

热点排行