所以我已经了解到StretchBlt可以通过否定nWidthSrc/Dest和nHeightSrc/Dest参数来水平和/或垂直镜像。我希望这个功能没有StretchBlt的性能开销。我在BitBlt上尝试了同样的技术,但不起作用。
有没有办法使用像BitBlt这样简单的东西来镜像镜像,而不需要StretchBlt的过度杀伤力?或者,如果源和目标大小相同,StretchBlt不会影响性能吗?
发布于 2009-02-16 15:11:02
BitBlt仅对相关像素执行数学运算(或、异或等),不会以任何方式调整图像大小。这正是StretchBlt的作用所在,而且StretchBlt (与任何其他图形大小调整操作相比)的速度快得离谱,因为在大多数情况下,它可以使用显卡来加速其性能。
发布于 2009-02-16 14:32:58
所有的Win32函数都可能会被高度优化。
是什么让你认为StretchBlt会在性能上大获成功?
您是否使用StretchBlt分析了您的应用程序?
您可以自己反转所有的位图数据,看看是否可以在StretchBlt中做得更好。
这里有一个链接可能会对你有所帮助:
http://www.codeguru.com/cpp/g-m/bitmap/specialeffects/article.php/c1739
发布于 2009-02-16 14:25:04
要镜像图像,您只需以相反的顺序循环遍历像素。例如,如果您想要水平镜像,您只需执行以下操作:
我不知道您使用的是什么语言,但它们中的大多数都允许您使用GDI单独操作像素或位。
https://stackoverflow.com/questions/553424
复制相似问题