2014-02-28 68 views
0

我正在製作一個小遊戲和十字架遊戲,並且我希望在勝利組合上繪製一條線。播放網格由一個按鈕網格組成,我希望該線條位於它們的頂部。此時該線將繪製,但即使設置爲透明,它仍會隱藏按鈕網格的黑色背景。如何在按鈕上繪製一條簡單線條

當我想開始一個新遊戲時,我會如何使透明度工作清晰明確? 我希望這是有道理的。

這是抽獎類:

public class DrawView extends View { 
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 

    public DrawView(Context context) { 
     super(context); 

     paint.setColor(Color.RED); 
     paint.setStrokeWidth(10); 
    } 

    @Override 
     public void onDraw(Canvas canvas) { 
      canvas.drawLine(0, 0, 1000, 1000, paint); 
    } 

} 

這是遊戲的方法的一部分:

public void checkWin() { 
     if (squares[1] == 1 & squares[2] == 1 & squares[3] == 1) { 
      for (int i = 1; i <= 9; i++) { 
       buttons[i].setEnabled(false); 
      } 

      drawView = new DrawView(this); 
      drawView.setBackgroundColor(Color.TRANSPARENT); 
      setContentView(drawView); 

      Intent d = new Intent(this, Win.class); 
      startActivity(d); 

回答

0

如果你想繪製阿爾法線,使用:

paint.setAlpha(125); 
paint.setColor(Color.RED); 
paint.setStrokeWidth(10); 

只要記住在使用它之後將其重新設置,如果您在其他地方使用paint

注:

  • 0 =完全透明
  • 255 =完全不透明

編輯:好吧,我想你可能會試圖清除畫布,所以它開始了空白。

將其清除,並用PorterDuff清除它。

@Override 
    public void onDraw(Canvas canvas) { 
     canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); 
     canvas.drawLine(0, 0, 1000, 1000, paint); 
} 

我不認爲你的作品setBackgroundColor因爲你已經重寫draw方法。但我可能是錯的,上面的代碼應該解決這個問題。

+0

感謝您的編輯,由於某種原因我直到現在纔看到這一點。我確實試圖清除畫布。我還沒有嘗試這種修復方法,因爲此刻我正在處理其他項目。當我這樣做時,我會讓你知道它是如何發生的。 再次感謝。 –