Android 重缩放路径有问题

Android 重缩放路径有问题,android,canvas,path,zooming,scale,Android,Canvas,Path,Zooming,Scale,我在重新缩放绘制的路径时遇到一些问题。在缩小时,我设法使路径保持在正确的位置,但我不知道如何正确缩放。此外,在缩小时,应用程序会画一条线,将路径的第一个点与最后一个点连接起来,我不知道为什么 以下是一些图片来解释我的意思: 在我尝试缩放之前,你可以看到它的样子 你可以看到它在缩放后的样子。(之后我画了红线,向你展示路径如何改变它的大小。你也可以看到直线,它是在缩放后以某种方式添加的。) 以下是我的onDraw方法: @Override protected void o

我在重新缩放绘制的路径时遇到一些问题。在缩小时,我设法使路径保持在正确的位置,但我不知道如何正确缩放。此外,在缩小时,应用程序会画一条线,将路径的第一个点与最后一个点连接起来,我不知道为什么

以下是一些图片来解释我的意思:

在我尝试缩放之前,你可以看到它的样子

你可以看到它在缩放后的样子。(之后我画了红线,向你展示路径如何改变它的大小。你也可以看到直线,它是在缩放后以某种方式添加的。)

以下是我的onDraw方法:

    @Override
          protected void onDraw(Canvas canvas) {
              super.onDraw(canvas);

              canvas.save();
              canvas.scale(mScaleFactor, mScaleFactor);
              drawCoordinateSystem(canvas, mPosX, mPosY);

              if (drawMode == false) {
                  path.reset();
                  path.moveTo((lastTouchX/displayWidth) * (displayWidth/mScaleFactor) , (lastTouchY/displayHeight) * (displayHeight/mScaleFactor));


              for (int i = 0; i <= pathPointsX.size() - 1; i++) {
                  float mPointX = (pathPointsX.get(i)/displayWidth) * (displayWidth/mScaleFactor);
                  float mPointY = (pathPointsY.get(i)/displayHeight) * (displayHeight/mScaleFactor);


                  path.lineTo(mPointX, mPointY);

                  } 

              canvas.drawPath(path, paintL);
              } else {
              canvas.drawPath(path, paintL); }
              canvas.restore();


          }
@覆盖
受保护的void onDraw(画布){
super.onDraw(帆布);
canvas.save();
canvas.scale(mScaleFactor,mScaleFactor);
绘图协调系统(画布、mPosX、mPosY);
如果(drawMode==false){
path.reset();
路径.移动到((lastTouchX/displayWidth)*(displayWidth/mScaleFactor),(lastTouchY/displayHeight)*(displayHeight/mScaleFactor));

对于(int i=0;我认为canvas和path都可以使用矩阵本身进行变换,您能解释一下这是什么意思吗?我想我已经计算出了正确的矩阵,但我使用了哪些命令,以及在代码中使用了哪些命令?我试过:'path.transform(矩阵);'canvas.setMatrix(矩阵);'但这些似乎不起作用。