首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Win32 BitBlt --水平镜像

Win32 BitBlt --水平镜像
EN

Stack Overflow用户
提问于 2009-02-16 14:13:04
回答 4查看 3.2K关注 0票数 0

所以我已经了解到StretchBlt可以通过否定nWidthSrc/Dest和nHeightSrc/Dest参数来水平和/或垂直镜像。我希望这个功能没有StretchBlt的性能开销。我在BitBlt上尝试了同样的技术,但不起作用。

有没有办法使用像BitBlt这样简单的东西来镜像镜像,而不需要StretchBlt的过度杀伤力?或者,如果源和目标大小相同,StretchBlt不会影响性能吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-02-16 15:11:02

BitBlt仅对相关像素执行数学运算(或、异或等),不会以任何方式调整图像大小。这正是StretchBlt的作用所在,而且StretchBlt (与任何其他图形大小调整操作相比)的速度快得离谱,因为在大多数情况下,它可以使用显卡来加速其性能。

票数 2
EN

Stack Overflow用户

发布于 2009-02-16 14:32:58

所有的Win32函数都可能会被高度优化。

是什么让你认为StretchBlt会在性能上大获成功?

您是否使用StretchBlt分析了您的应用程序?

您可以自己反转所有的位图数据,看看是否可以在StretchBlt中做得更好。

这里有一个链接可能会对你有所帮助:

http://www.codeguru.com/cpp/g-m/bitmap/specialeffects/article.php/c1739

票数 1
EN

Stack Overflow用户

发布于 2009-02-16 14:25:04

要镜像图像,您只需以相反的顺序循环遍历像素。例如,如果您想要水平镜像,您只需执行以下操作:

  1. 展开图像画布将图像大小增加一倍
  2. 从图像底部开始,从上到下将像素写入镜像区域。
  3. 从左到右执行步骤3。

我不知道您使用的是什么语言,但它们中的大多数都允许您使用GDI单独操作像素或位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/553424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档