2012-12-23 47 views
1

我正在寫一個簡單的視圖,在某個動作顯示下一個點後,將顯示一個點。點在一個垂直條上。所以我創建了一個可以清除條的功能。然後在我想要點的位置繪製一個圓圈。代碼段如下。畫布不能正確重畫

private void clear_strip(){ 
    paint.setColor(Color.BLACK); 
    paint.setStyle(Paint.Style.FILL_AND_STROKE); 
    m_canvas.drawRect(0, 0,width/8, height, paint); 
    paint.setColor(Color.GREEN); 
} 

private void set_dot(){ 
    clear_strip(); 
    m_canvas.drawCircle(width/10, (int) (font_height*(scoreboard.current_batter_position()+0.5))/1, font_height/4, paint); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    set_dot(); 
    canvas.drawBitmap(m_bitmap, 0, 0, paint); 
} 

但其中一個點只是沒有更新。它會保留舊的點,跳過那個點,然後移動到下一個點。我試圖在drawCircle調用之前打印出logcat的位置,並且位置是正確的,它只是沒有繪製(也沒有清除)....請指教。

回答

1

你得到一個畫布,通過你的onDraw方法。但點繪圖代碼使用畫布m_canvas。將畫布作爲參數傳遞給點繪圖代碼以修復該問題。

+0

其實m_bitmap與m_canvas關聯。我發現了這個問題。這是一個邏輯問題,我沒有更新那個點上的特定視圖......所以 – user1783960