2015-10-13 89 views
0

我有两条线,每次在同一点绘制一条线,而每当视图无效时,另一条线将旋转一定程度。画布在两条线之间填充颜色

的代码如下所示:

protected void onDraw(Canvas canvas) { 
      int width = getWidth(); 
      int height = getHeight(); 
      int centerx = width/2; 
      int centery = height/2; 
      canvas.drawLine(centerx, 0, centerx, height, paint); 
      canvas.drawLine(0, centery, width, centery, paint); 
      if (angle_in_degrees!= null) 
       canvas.rotate(angle_in_degrees, centerx, centery); 
      paint.setColor(0xff0000ff); 
      canvas.drawLine(centerx, -1000, centerx, +1000, paint); 
      canvas.drawLine(-1000, centery, 1000, centery, paint); 
      paint.setColor(0xff00ff00); 
     } 

一切工作正常,但我想用不同的颜色来填充这两条线之间的空间。我怎么做?谢谢。

回答

0

对此question的接受答案听起来好像它适用于您的情况一样。本质上,作者使用Path对象连接所有需要填充的点之间的点,最后调用canvas.drawPath()填充内部区域。

在你的情况下,这可能会是这个样子:

Path path = new Path(); 
path.lineTo(centerX, 0); 
path.lineTo(centerX, height); 
path.lineTo(0, centerY); 
//etc. Essentially mirroring what your line does, but in one dimension (x,y) points. 
canvas.drawPath(path, paint); 

编辑:您还需要确保您使用Paint对象具有FILL风格:

paint.setStyle(Paint.Style.FILL); 
+0

谢谢为您的答复PPartisan。我之前看过链接,但在我的情况下,我不知道最后一点是正确的吗?我所知道的是线条应该旋转的角度正确吗?那么我怎样才能构建一条通往我最终目标的道路? – shashank

+0

@shashank如果没有测试,不能肯定地说,但我希望它能像你的生产线一样工作。 (即当“画布”已经旋转时,在两点之间划一条线在恢复时处于一个角度)。您可能需要在退出onDraw()之前在旋转和“canvas.restore()”之前调用'canvas.save()'。 – PPartisan