2011-02-02 2 views
1

사각형을 그리기 위해 4 개의 선 (canvas.drawLine)을 그립니다. 직사각형 영역을 채울 가능성이 있습니까? (나는 안드로이드가 rectDraw를 가지고 있다는 것을 알고있다. 내 것은 호기심이다.)onDraw 채우기 모양을 canvas.drawLine으로 작성하십시오.

미리 감사드립니다.


ok .. 경로를 만들었습니다. 코드를 따르십시오 .. 내부 영역을 채우는 방법을 설명해주십시오.

`Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);    
    paint.setStrokeWidth(2); 
    paint.setColor(android.graphics.Color.RED); 
    paint.setStyle(Paint.Style.FILL_AND_STROKE); 
    paint.setAntiAlias(true); 
    path.reset(); 
    path.setFillType(Path.FillType.INVERSE_EVEN_ODD);  
    path.moveTo(mPin[0].getX() + 10, mPin[0].getY() + 10); 
    path.lineTo(mPin[1].getX() + 10, mPin[1].getY() + 10); 

    path.moveTo(mPin[1].getX() + 10, mPin[1].getY() + 10); 
    path.lineTo(mPin[3].getX() + 10, mPin[3].getY() + 10); 

    path.moveTo(mPin[3].getX() + 10, mPin[3].getY() + 10); 
    path.lineTo(mPin[2].getX() + 10, mPin[2].getY() + 10); 

    path.moveTo(mPin[2].getX() + 10, mPin[2].getY() + 10); 
    path.lineTo(mPin[0].getX() + 10, mPin[0].getY() + 10); 
    paint.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR)); 
    c.drawPath(path, paint);` 

답변

2

경로 세그먼트로 선을 그리면 직사각형을 채울 수 있습니다. 그러나 4 개의 연결되지 않은 선분을 교차하는 영역을 채우려면 자신의 루틴을 작성해야한다고 생각합니다. "flood fill"또는 "seed fill"을 검색하십시오.

+0

덕분에 내가 살펴 보겠습니다. – Blackbelt

1

망가 경로 객체를 생성, drawLine을 사용하지만 :

protected void onDraw(Canvas canvas) { 


    Paint paint = new Paint(); 
    paint.setStyle(Paint.Style.FILL); 
    paint.setColor(Color.parseColor("#FFA800")); 


    Path path = new Path(); 

    path.moveTo(0, 0); 
    path.lineTo(getWidth()/2, 0); 
    path.lineTo(getWidth(), getHeight()/2); 
    path.lineTo(getWidth()/2, getHeight()); 
    path.lineTo(0, getHeight()); 
    path.lineTo(0, 0); 

    canvas.drawPath(path, paint); 

} 
+0

답변 해 주셔서 감사합니다! – Blackbelt

관련 문제