Android的 - 路径未与帆布
问题描述:
旋转,我有以下的代码,试图旋转的路径:Android的 - 路径未与帆布
//inside onDraw
switch (orientation) {
case FACE_FRONT:
canvas.save();
updatePath();
canvas.rotate(0);
canvas.restore();
break;
case FACE_RIGHT:
canvas.save();
updatePath();
canvas.rotate(90);
canvas.restore();
break;
case FACE_REAR:
canvas.save();
updatePath();
canvas.rotate(180);
canvas.restore();
break;
case FACE_LEFT:
canvas.save();
updatePath();
canvas.rotate(270);
canvas.restore();
break;
}
canvas.drawPath(mPath, mPaint);
public void updatePath() {
if (mPointArray.size() > 1) {
mPath.moveTo(mPointArray.get(0).x * scaleX, mPointArray.get(0).y * scaleX);
for (int x = 1; x < mPointArray.size(); x++) {
mPath.lineTo(mPointArray.get(x).x * scaleX, mPointArray.get(x).y * scaleX);
}
}
mPath.offset((centerX - (tmWidth/2)) * -scaleX, (centerY - (tmWidth/2)) * -scaleX);
}
我路上不与画布旋转等一些未知的原因。任何人都可以让我知道我做错了什么。
我试着寻找其他的例子,但大多数的例子似乎是位图而不是路径。
答
你为什么要调用restore()?
删除所有canvas.save()和canvas.restore()调用,你会没事的。
所以里面的onDraw()你的代码应该是这样的:
updatePath();
switch (orientation) {
case FACE_FRONT:
canvas.rotate(0);
break;
case FACE_RIGHT:
canvas.rotate(90);
break;
case FACE_REAR:
canvas.rotate(180);
break;
case FACE_LEFT:
canvas.rotate(270);
break;
}
canvas.drawPath(mPath, mPaint);