2014-02-28 66 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

感谢您的编辑,由于某种原因我直到现在才看到这一点。我确实试图清除画布。我还没有尝试这种修复方法,因为此刻我正在处理其他项目。当我这样做时,我会让你知道它是如何发生的。 再次感谢。 –