在android帮助中翻转位图?

我想为我的游戏节省内存,我想问你,因为我找不到任何东西,上次我在这里问了些什么,我得到了一个很好的答案。 我可以在eclipse中翻转位图,这样我可以节省精灵的内存吗? 我发现的所有教程都是关于旋转而不是翻转。 翻转位图的教程仅适用于开放式Gl或类似的东西。 请帮帮我。 我一直在寻找谷歌的教程,但我放弃了第5页。任何人都可以帮助我吗? 有没有人有一个很好的教程? 顺便说一下,我正在使用canvas。 谢谢!

每当我试图运行它时,我就会收到一个力量……你能想出来吗? 这是我的代码:

Matrix flipHorizontalMatrix = new Matrix(); flipHorizontalMatrix.setScale(-1,1); flipHorizontalMatrix.postTranslate(0, canvas.getHeight()-arrowL.getHeight()); canvas.drawBitmap(arrowL, flipHorizontalMatrix, null); 

我希望箭头位于右下角。

由于您使用的是Canvas ,为什么不尝试使用drawBitmap (Bitmap bitmap, Matrix matrix, Paint paint)方法。 使用翻转x坐标的Matrix

你可以这样做:

 Matrix flipHorizontalMatrix = new Matrix(); flipHorizontalMatrix.setScale(-1,1); flipHorizontalMatrix.postTranslate(myBitmap.getWidth(),0); canvas.drawBitmap(myBitmap, flipHorizontalMatrix, myPaint); 

谢谢,看看这个代码它可能对你有用旋转位图图像..这里我有一个水族馆鱼的例子,它应该从左向右移动并翻转并继续从右向左移动,反之亦然..这是给你的代码..

  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); fish = BitmapFactory.decodeResource(getResources(), R.drawable.fish); v = new OurView(this); 

public class OurView扩展了SurfaceView实现Runnable {

  Thread t = null; SurfaceHolder holder; boolean isitOK = false; String Flag = "right"; Bitmap rotatedBitmap=null; Matrix rotateRight = new Matrix(); Matrix rotateLeft = new Matrix(); Bitmap rSprite=null; Bitmap lSprite=null; public OurView(Context context) { super(context); holder = getHolder(); rotateLeft.setScale(-1, 1); rSprite = Bitmap.createBitmap(fish, 0, 0, fish.getWidth(), fish.getHeight(), rotateRight, true); lSprite = Bitmap.createBitmap(fish, 0, 0, fish.getWidth(), fish.getHeight(), rotateLeft, true); } @Override public void run() { // TODO Auto-generated method stub while (isitOK == true) { if (!holder.getSurface().isValid()) { continue; } Canvas canvas = holder.lockCanvas(); canvas.drawBitmap(bg, 0, 0, null); if(Flag == "right") canvas.drawBitmap(lSprite, x, y, null); if(Flag == "left") canvas.drawBitmap(fish, x, y, null); if (Flag == "right" && x <= 60) { x++; if (x == 60) { Flag = "left"; // canvas.drawBitmap(rSprite, 0, fish.getWidth(), null); canvas.drawBitmap(fish, x, y, null); } } if (Flag == "left" && x >= 0) { x--; if (x == 0) { Flag = "right"; canvas.drawBitmap(fish, x, y, null); } } holder.unlockCanvasAndPost(canvas); } }