我正在使用自定义视图和画布在屏幕上绘制对象。该视图与屏幕原点处于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();
}