2013-05-13 92 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