Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Resize a path in android canvas

I have drawn an path in my canvas. On Single tap I want to resize the path. Say I want to make it double the original size.

I have tried path.transform but it shifts the path to a different location in canvass. This is the code I used for that

Matrix translateMatrix = new Matrix();
translateMatrix.setTranslate(100,0);
p.transform(translateMatrix); 

How can I resize a path in android?

like image 707
Zach Avatar asked Sep 05 '13 13:09

Zach


2 Answers

Havent done this by myself, but you should probably use

Matrix scaleMatrix = new Matrix();
scaleMatrix.setScale(sx,sy, px, py);
p.transform(scaleMatrix); 

where sx,sy should be 2,2 in your case, if you want double size and px,py should probably be 0.5,0.5 in your case

like image 185
hendrix Avatar answered Nov 13 '22 10:11

hendrix


I have tried the solution provided by smitalm. Still the path was shifting its location. I have tried this way and it worked for me.

Matrix scaleMatrix = new Matrix();
RectF rectF = new RectF();
path.computeBounds(rectF, true);
scaleMatrix.setScale(1.25f, 1.25f,rectF.centerX(),rectF.centerY());
path.transform(scaleMatrix); 
like image 37
Zach Avatar answered Nov 13 '22 09:11

Zach