2

長方形を描くために4本の線(canvas.drawLine)を描きます。長方形の領域を埋める可能性はありますか?(私はアンドロイドがrectDrawを持っていることを知っています。私のものは好奇心だけです)

前もって感謝します。


わかりました。パスセグメントを作成したパスもあります。コードに従って..内部領域を埋める方法を説明できますか?

    `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);`
4

2 に答える 2

4

drawLineを使用しないでください。ただし、Pathオブジェクトを作成してください。

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);

}
于 2015-10-08T16:29:02.960 に答える
2

線分をパスとして描画すると、四角形を塗りつぶすことができます。しかし、接続されていないが交差する4つの線分で囲まれた領域を埋めるには、独自のルーチンを作成する必要があると思います。「フラッドフィル」または「シードフィル」を検索します。

于 2011-02-02T15:08:54.163 に答える