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
-~----------~----~----~----~------~----~------~--~---

Reply via email to