2013-05-13 75 views
0

我正在绘制包含bg的ImageView上的车速表。我使用此代码作为刻度和值Android在画布上绘制文字

for (int i = 0; i < 270; i += 5) { 
     if (i % 30 == 0) { 
      scalePaint.setStrokeWidth(2f); 
      canvas.drawLine(3.55f * wQuarter, 2 * hQuarter, 
        3.78f * wQuarter, 2 * hQuarter, scalePaint); 
      canvas.drawText(String.valueOf(i), 3.5f * wQuarter, 
        2f * hQuarter, scalePaint); 


     } else { 
      scalePaint.setStrokeWidth(1.5f); 
      canvas.drawLine(3.65f * wQuarter, 2 * hQuarter, 
        3.78f * wQuarter, 2 * hQuarter, scalePaint); 

     } 
     canvas.rotate(5f, 2 * wQuarter, 2 * hQuarter); 
    } 

蜱绘制为他们应该,但问题是文本也随着画布旋转。如何在重置其旋转的同时保留文本位置?大部分是上下颠倒或在+90 -90

这里是enter image description here

+0

您可以提供屏幕截图? – Codeman 2013-05-13 22:45:09

+0

旋转后绘制文字。你想通过旋转的旋转矩阵来绘制多个位置,以获得在 – 2013-05-13 22:46:31

+0

处绘制的新位置,你能解释一下吗?几何对我来说永远都不好 – Nick 2013-05-13 22:50:06

回答

0

你可以使用canvas.save()来保存影响画布变量的状态(旋转,扭曲,... ),然后canvas.restore()返回到该状态。
所以你如果您需要重新安排你的for循环的内容一点点地做到这一点:

canvas.save(); 
canvas.rotate(...); 
{draw the line} 
canvas.restore(); 
canvas.drawText(...); 
+0

是不是有点太饿了? – Nick 2013-05-13 22:52:41

+0

也,这不起作用,如果你保存 - >旋转 - >恢复你到达你开始的地方 – Nick 2013-05-13 22:57:19