canvas.drawBitmap(bitmap, matrix, ...) This is really just a more efficient way to do...
canvas.save(Canvas.MATRIX_SAVE_FLAG); canvas.concat(matrix); drawBitmap(bitmap, 0, 0, ...); canvas.restore(); In the original example, the matrix had a -1 scale in X. This means that all X coordinates will be negated. Thus the image will draw flipped in X, but it will also appear to the left of the Y axis, which defaults to the left edge of the view. Thus the fix was to post- translate everything to the right by at least the width of the bitmap, to make it appear on screen. Another fix could have been matrix.setScale(-1, 1); matrix.postTranslate(bitmap.getWidth(), 0); canvas.drawBitmap(bitmap, matrix, ...); mike On Nov 3, 2008, at 10:46 AM, Guolong wrote: thanks, it do work. On Nov 3, 1:44 pm, Romain Guy <[EMAIL PROTECTED]> wrote: > sprite = > BitmapFactory > .decodeResource(appContext.getResources(),R.drawable.spritegfx); > canvas.save(); > canvas.scale(-1.0f, 1.0f); > canvas.drawBitmap(sprite, 0,0, null); > canvas.restore(); > > This will work but you also need to translate the image too. You are > just drawing it outside of the canvas. > > > > On Sun, Nov 2, 2008 at 8:42 AM, Guolong <[EMAIL PROTECTED]> > wrote: > >> hello, > >> I want to draw a fliped image and try following code: > >> sprite = >> BitmapFactory >> .decodeResource(appContext.getResources(),R.drawable.spritegfx); >> Matrix temp1=new Matrix(); >> temp1.preScale(-1.0f,1.0f); >> canvas.drawBitmap(sprite, temp1, null); > >> But it does not work. neither work for the following code: > >> sprite = >> BitmapFactory >> .decodeResource(appContext.getResources(),R.drawable.spritegfx); >> canvas.save(); >> canvas.scale(-1.0f, 1.0f); >> canvas.drawBitmap(sprite, 0,0, null); >> canvas.restore(); > >> Any idea for this problem please? > >> Any way, following code do work. >> sprite = >> BitmapFactory >> .decodeResource(appContext.getResources(),R.drawable.spritegfx); >> Matrix temp1=new Matrix(); >> temp1.preScale(-1.0f,1.0f); >> flipedSprite = Bitmap.createBitmap(sprite , 0, 0, >> sprite .getWidth(), >> sprite .getHeight(), temp1, false); >> canvas.drawBitmap(flipedSprite , 0,0, null); > >> But I just don't want to create a new bitmap for every fliped image >> because there're a lot of fliped or mirrored image in my program. > > -- > Romain Guywww.curious-creature.org --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---