目前在开发一个小游戏,使用 easyx 图形库开发的。目前遇到一个问题卡住了,我想让飞机机头一直朝外绕着地球顺时针地飞,但是,不知道怎么旋转图片???easyx 库并没有现成的函数啊?不知道有没有什么WIN32 API函数可以用吗??

上传的附件
你的回答被采纳后将获得: 12点积分 (将会扣除手续费1点积分。)

keyboard_arrow_left上一篇 : tcp socket服务端端口监听成功,但是客户端链接不上?? 汇编中,溢出标志和进位标志有什么区别?? : 下一篇keyboard_arrow_right

6个回答

Sametime
2019-03-06 09:23:01

感觉旋转图片很麻烦啊。。。

luckone
2019-03-06 10:15:43

可以用CImage和GDI+

BoyMeetsGirl
2019-03-06 13:53:14

用WIN32 API函数BitBlt、StretchBlt等绘图函数是旋转不了的,你可以使用SetWorldTransForm这个函数,可以实现旋转DC,从而实现图片旋转

Carewho
2019-03-06 18:53:38

通过矩形的中心坐标与原顶点坐标以及旋转角度,计算矩形的旋转后4个顶点的位置的公式如下:

  1. x2 = (x1-x0)*cos(q) –(y1-y0)*sin(q) + x0;
  2. y2 = (x1-x0)*sin(q) + (y1-y0)*cos(q) + y0;

其中,q表示矩形的旋转角度,x1表示矩形的原顶点横坐标,x0表示矩形的中心坐标。

但是,C语言中的sin()函数和cos()函数中的参数并不是角度,而是弧度,所以需要我们通过下述公式将角度转化为弧度:

  1. 弧度= 3.1415926*角度/180;

根据上述公式,我们可以计算一个点绕另一个点旋转一定角度后的位置坐标。

飞旋转的原理可以是:计算出图片各个点旋转后的坐标,再把每个点画到屏幕上!

Mockingjay
2019-03-07 08:55:42

easyx库没有旋转图片的函数的

WeAreOne
2019-04-05 09:38:12

SetWorldTransForm这个函数是旋转DC而已

精彩评论

  • qt+Mysql 发布 无法连接数据库的问题
    debug和release时都可以正常连接,只是打包过后出现问题!这应该就是打包的问题了,代码和程序应该都没错!!!你可以尝试更换其他的打包方式试试
    2019-05-08 10:39:51 thumb_up( 1 )
  • 面向过程编程和面向对象编程怎么理解?
    面向过程(结构化程序设计)采用自顶向下、分而治之的方法,将整个程序按功能划分为几个可独立编程的子过程模块,每一子模块完成指定的子任务,主过程通过调用各子过程完来成全部处理工作。 面向对象的程序设计(Object-Oriented Programming)面向对象的程序设计方法强调直接以现实世界中的物体为中心来思考和认识问题,并按照这些事物的本质特征把它们抽象为类。采用数据抽象和数据隐藏,类之间互相交互,共同构成大型的面向对象基础。
    2019-03-08 18:15:03 thumb_up( 4 )
  • 面向过程编程和面向对象编程怎么理解?
    面向过程是围绕功能进行的,为每一个功能写一个函数,需要考虑其中的每一个细节,以步骤划分,可以这么比喻 面向过程的程序=算法+数据结构 而面向对象则像是组装,先确定一个系统是由哪些对象组成,再分别去设计这些对象,将它们像零件一样组装起来形成有完整功能的系统,以功能划分,相当于 对象=算法+数据结构 面向对象的程序=N个对象+控制信息 面向对象和面向过程的区别概括起来讲就是面向过程程序只用函数实现,而面向对象程序是用类实现各个功能模块。
    2019-07-01 09:42:34 thumb_up( 2 )
  • 想学APP开发,是学HTML5呢?还是学原生Android呢?
    原生学习有难度,HTML门坎较低,如果你真想做App开发的话 ,学原生吧,HTML后面慢慢学
    2019-07-15 16:37:08 thumb_up( 3 )
  • 想学APP开发,是学HTML5呢?还是学原生Android呢?
    HTML5是指WEB APP吗?这个的好处是跨平台比较好吧,但是就是有很多APP功能用这个实现起来很难!原生Android功能更全面和强大,就是学起来没有WEB容易吧
    2019-07-05 08:38:49 thumb_up( 2 )
  • eclipse项目 找不到或无法加载主类
    可以尝试以下方法:环境变量检查一下,没错的话第二步project里面是否有打开Build Automatically
    2019-05-10 15:05:22 thumb_up( 1 )
  • eclipse项目 找不到或无法加载主类
    Eclipse错误: 找不到或无法加载主类或项目无法编译10种解决大法: 1、在src文件夹上点右键-Build Path-Use as Source Folder,重新进行编译,一切正常了。 2、在Eclipse工程文件夹上点右键-Refresh,重新编译,一功OK(这个方法一般不起作用)。 3、右键Properties在Java Builder Path的Libraries的标签里面看是否有缺少或者无用的(一般带红差头)的,引入对应的jar包或者删除掉。 4、在Properties里面设置Source.添加你的Java路径.比如src,然后需要设置下面的Default output folder,这里设置你的输出路径也就是class路径了。 5、右键Properties在里面的builder里面把项目的builder.xml引用(import)进来。 6、把右键Properties在Java Builder Path的Libraries全部删除,尤其是jre,然后,点击保存,关闭eclipse,然后再打开,再把对应的jre和lib下边的相关jar引进来,保存,重新编译后就好了,我也不知道为啥,有一次我就这么弄好了。 7、把class下边的有.class文件的话还是这样,把这些.class文件删除掉,然后elipse中菜单project—clear然后选中对应项目,在project菜单下边勾上Build Automaticlly(自动部署),然后生成新的就class文件就OK了。 8、把项目下边的.project删除掉,从同事身边运行正常的项目下边拷贝过来它的.project文件,刷新项目试试。 9、把项目下边的.classpath删除掉,从同事身边运行正常的项目下边拷贝过来它的.classpath文件,刷新项目试试。 10、终极解决办法,也是很管用的解决办法,就是把整个项目删除掉,删除之前把更改的内容提交到CVS或者SVN上,然后重新从SVN或者CVS上把项目档下来。
    2019-05-11 16:35:34 thumb_up( 2 )
  • qt+Mysql 发布 无法连接数据库的问题
    完蛋了…..问题已解决!解决办法:确实是在exe的同级目录中加入libmysql.dll。但是加了还没用的话,可能是你的libmysql.dll没用,所以你需要重新下载一个可用的libmysql.dll。-_-这个问题我找了半天….希望这个帖子对你们有用.
    2019-05-08 10:43:32 thumb_up( 2 )
eject