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);