Graphics 管理旋转移动光栅地图
我的应用程序提供了一个(光栅)移动地图。 我需要能够显示地图旋转的基础上任何给定的角度。 该程序目前使用VC++/MFC,但问题是通用的。 我有一个源位图(CBitmap或HBITMAP),并使用StretchBlt将其绘制到设备上下文(CDC)。 当角度为0时,这种方法可以快速平滑地工作(用户可以用鼠标平稳地抓取贴图),但如果我尝试旋转位图然后显示它,则情况并非如此(使用SetWorldTransform()左右旋转位图需要数百毫秒,速度太慢) 我认为解决方案是只与当前屏幕上的像素相关,而不旋转原始源位图,这是关键 如果有人有类似实现的经验,那么它可能会为我节省大量的尝试和错误工作。 谢谢Graphics 管理旋转移动光栅地图,graphics,bitmap,rotation,raster,Graphics,Bitmap,Rotation,Raster,我的应用程序提供了一个(光栅)移动地图。 我需要能够显示地图旋转的基础上任何给定的角度。 该程序目前使用VC++/MFC,但问题是通用的。 我有一个源位图(CBitmap或HBITMAP),并使用StretchBlt将其绘制到设备上下文(CDC)。 当角度为0时,这种方法可以快速平滑地工作(用户可以用鼠标平稳地抓取贴图),但如果我尝试旋转位图然后显示它,则情况并非如此(使用SetWorldTransform()左右旋转位图需要数百毫秒,速度太慢) 我认为解决方案是只与当前屏幕上的像素相关,而不旋
Avi.看起来SetWorldTransform非常慢: 虽然本文中介绍的其他选项速度更快,但当然还有其他更好的解决方案,如: (检查注释以获得修复和改进) 还有一些非以Windows为中心的快速旋转算法:
请注意,如果您保证2维的功率,您可以获得显著的速度提升。作为我的问题和提供的答案的后续,让我总结以下内容:
Avi.在第一篇文章中,他们说:“GetRotatedBitmapNT()这个函数是特定于NT的,在Windows95上不起作用。它是本主题中列出的三个函数中最简单的,可能也是最快的。”所以据我所知,他们声称GetRotatedBitmapNT()可能是最快的。但如果我发现了突破,我会查看其他链接并更新回来。非常感谢。。。阿维。