所以我读到,StretchBlt 可以通过否定 nWidthSrc/Dest 和 nHeightSrc/Dest 参数来水平和/或垂直镜像图像。我希望这个功能没有 StretchBlt 的性能开销。我用 BitBlt 尝试了相同的技术,但没有成功。

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

有帮助吗?

解决方案

的BitBlt将只在执行问题上各个像素数学化操作(或,异或等),也不会以任何方式调整图像大小。这正是StretchBlt是,和StretchBlt(比其他任何图形缩放操作)是出奇的快,在大多数情况下,它可以使用显卡加速其性能。

其他提示

所有的Win32函数很可能将要极其优化。

是什么让你觉得StretchBlt将是一个很大的性能损失?

你有没有使用StretchBlt异型您的应用程序?

您可以扭转的所有位图数据的自己,看看你能不能做的更好是StretchBlt。

下面是一个链接,可以帮助您解决:

http://www.codeguru.com/cpp /gm/bitmap/specialeffects/article.php/c1739

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

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

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

没有办法,你将要更高效,StretchBlt,除非你知道有关图像一些额外的信息(例如,有一个边界,所以你不必翻转一定的像素。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top