我正在使用自定义视图和画布在屏幕上绘制对象。该视图与屏幕原点处于Y偏移处。我想平移画布,然后绘制一个对象。但是,当我使用setmatrix转换画布时,原点从视图原点转移到屏幕原点。按照以下代码,应在视图原点绘制圆。但是我需要在绘制圆时添加视图与屏幕原点的偏移量。如何获得理想的结果?

protected void onDraw(Canvas canvas)
{
    super.onDraw(canvas);
    canvas.drawPaint(canvasPaint);
    m_canvasMatrix.set(getMatrix());
    m_canvasMatrix.postTranslate(-100, -100);
    canvas.setMatrix(m_canvasMatrix);
    canvas.drawCircle(100, 100, 20, circlePaint);


}

最佳答案

我不确定我是否完全理解您的问题,但是我认为您想做的只是将相对翻译应用于Canvas。在这种情况下,您几乎要考虑太多事情。您需要做的只是:

protected void onDraw(Canvas canvas)
{
    canvas.save();


    canvas.translate(100, 0);


    // At this point, drawing something (such as a square) with a top-left
    // corner at 0,0 would result in a square that's drawn with its top-left
    // 100px to the right of the left bound of the View.


    ...

    canvas.restore();
}

10-07 19:44
查看更多