transform=“matrix(0.694488,0,0,0.694488,287.527,988.6)”
svg中transform属性共有6个值
0.1.2.3.4.5
0-scalex
1-skew
2-rotate
3-scaley
4-translatex
5-translatey
那么如何让这些属性生效呢
答案是给path进行transform
这里需要注意的是,这些属性值要分多次tranform
if (mTransform.startsWith("matrix")){
String tr = mTransform.substring(7,mTransform.length()-1).replaceAll("\\s*","");
String[] trLs = tr.split(",");
String scaleX = trLs[0];
String scaleY = trLs[3];
String skew = trLs[1];//定义 2D 倾斜 正常值为0
String rotate = trLs[2];//定义2D 旋转角度 正常值为0
String translateX = trLs[4];
String translateY = trLs[5];
Matrix matrix = new Matrix();
matrix.setScale(Float.valueOf(scaleX),Float.valueOf(scaleY));
assert p != null;
p.transform(matrix);
matrix.setSkew(Float.valueOf(skew),Float.valueOf(skew));
p.transform(matrix);
matrix.setRotate(Float.valueOf(rotate));
p.transform(matrix);
matrix.setTranslate(Float.valueOf(translateX),Float.valueOf(translateY));
p.transform(matrix);
}
如果如下操作,只会生效最后一次的matrix,也就是说只有translate生效
if (mTransform!=null){
if (mTransform.startsWith("matrix")){
String tr = mTransform.substring(7,mTransform.length()-1).replaceAll("\\s*","");
String[] trLs = tr.split(",");
String scaleX = trLs[0];
String scaleY = trLs[3];
String skew = trLs[1];//定义 2D 倾斜 正常值为0
String rotate = trLs[2];//定义2D 旋转角度 正常值为0
String translateX = trLs[4];
String translateY = trLs[5];
Matrix matrix = new Matrix();
matrix.setScale(Float.valueOf(scaleX),Float.valueOf(scaleY));
matrix.setSkew(Float.valueOf(skew),Float.valueOf(skew));
matrix.setRotate(Float.valueOf(rotate));
matrix.setTranslate(Float.valueOf(translateX),Float.valueOf(translateY));
assert p != null;
p.transform(matrix);
}
}