我有以下代码尝试旋转路径:
//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);
}
由于某些未知原因,我的Path不会随着Canvas一起旋转。谁能让我知道我做错了什么。
我尝试寻找其他示例,但大多数示例似乎都是使用Bitmaps而不是Paths。
答案 0 :(得分:0)
为什么要调用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);