比如我这里有一幅图
是人物跑步的图片。每一小张的大小是 64×64
例如,如果我要按下“D”键人物就向右跑。如果我按下“A”键,人物就往左跑。
但是我图片只有向右跑的这一张,也就是说,我要在程序里对图片进行水平翻转。我查到,GDI+的Bitmap类中有个函数是:
RotateFlip(Gdiplus::RotateNoneFlipX); //这个是水平翻转问题就来了,如果我直接用这个水平翻转,那么我图片左边的第一张就会翻转到右边第一张。左边第二张就会到右边第二张......
那我之后载入图片就要判断方向,根据方向的不同来确定读取图片的X坐标。例如,我向右跑,那么我的X值初始就要为0,然后每一次显示图片,X就要加64。
而,如果我向左跑,那么我的X值初始就要从右边开始,然后每一次X减64。如果我还要加上人物的跳跃,攻击,蹲下等动作,这样代码量就相当大了。我本来想用Graphics类的函数进行翻转并输出的,但貌似没查到有相关函数。
我只知道Bitmap类有翻转图像的函数。我希望是这样。
每次读取了64×64的大小后,只翻转这一小张的图,不要把这一整张的图给翻转了。
如果能做出来,那么,我每次X值还是加64,就可以少写很多不必要的代码。
我用GDI+显示图像的函数是这样的:pgra->DrawImage(prun,X,Y,nBmpX,0,64,64,UnitPixel);//pgra是Graphics 类型的指针
//prun是Bitmap 类型的指针,已经载入了前面那张png图片
//X,Y是图像屏幕的位置,int型
//nBmpX,int型,是源图像的坐标值,每一次加64,就能读取下一张图请问各位前辈有什么好方法吗?GDI+MFC水平翻转