具有单位矩阵的Canvas setMatrix和concat表现不同

时间:2016-06-02 08:56:57

标签: java android

这是我的代码。 我显然要将矩阵设为标识,因此无论使用concat还是setMatrix,结果都必须相同。

这是我的代码:

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

    Log.d("matrix1 : " + canvas.getMatrix());
    canvas.concat(matrix);
    Log.d("matrix2 : " + canvas.getMatrix());

    if (backgroundBitmap != null) {
      canvas.drawBitmap(backgroundBitmap, 0, 0, null);
    }

    if(bitmap != null) {
      canvas.drawBitmap(bitmap, 0, 0, bitmapPaint);
      canvas.drawPath(path, drawPathPaint);
    }

    if (drawGuide && touchMove) {
      canvas.drawLine(0, y, getWidth(), y, guidePaint);
      canvas.drawLine(x, 0, x, getHeight(), guidePaint);
    }
  }

When I use concat:

When I use setMatrix(I expect that it translate half height):

最奇怪的是两个案例的toString结果相同。

06-02 17:46:26.502 5712-5712/kr.iplab.doodlr.debug D/DOODLR: CanvasView.onDraw() --- matrix1 : Matrix{[1.0, 0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]}

06-02 17:46:26.502 5712-5712/kr.iplab.doodlr.debug D/DOODLR: CanvasView.onDraw() --- matrix2 : Matrix{[1.0, 0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]}

我可以通过使用concat使我的程序运行良好,但我对此非常好奇。发生了什么事?

0 个答案:

没有答案