0

私は Android を学んでいて、キャンバスにさまざまな形を描こうとしています。現時点では、さまざまな角度の楕円形で立ち往生しています。

ここに画像の説明を入力

メソッド (半径の配列を取るもの)を使用しようとしましたpath.addRoundRect()が、そのような形状を実現するためにそこに渡す必要がある値がわかりませんでした。私も を使用してみましpath.lineTo()たが、そのような結果を達成できませんでした (似たようなものでしたが、まだ必要なものではありませんでした)。これを達成するための良い解決策は何ですか?

編集1:私が試したことは次のとおりです:

Path path= new Path();
    path.moveTo(x - radius, y - radius/ 1.5f);
    path.lineTo(x - radius/ 4, y - radius);
    path.lineTo(x, y - radius);
    path.lineTo(x + radius/ 2, y - radius);
    path.lineTo(x + radius, y - radius/ 2);
    path.lineTo(x, y + radius/ 2);
    path.lineTo(x - radius/ 2, y + radius/ 1.5f);
    path.lineTo(x - radius, y + radius/ 4);
    path.lineTo(x - radius, y - radius/ 1.5f);
    path.close();

Paint pathPaint = new Paint();
        pathPaint.setColor(Color.BLACK);                    
        pathPaint.setStrokeWidth(2.5f);              
        pathPaint.setDither(true);                    
        pathPaint.setStyle(Style.STROKE);       
        pathPaint.setStrokeJoin(Join.ROUND); 
        pathPaint.setStrokeCap(Cap.ROUND);      
        pathPaint.setPathEffect(new CornerPathEffect(20)); 
        pathPaint.setAntiAlias(true);
        canvas.drawOval(new RectF(x - radius, y - radius+ 2, x + radius-2, y + radius- 2), pathPaint);
        canvas.drawPath(path, pathPaint);

X と Y はディスプレイ上の座標であり、radius は円の半径です (私は円から描き始めました)。14 px に相当します。

私もこの方法を試しました:

float[] radii = new float[] {
                5, 
                5,
                1,
                1,
                5,
                1,
                1,
                1,

        };
        path.addRoundRect(new RectF(x - radius, y - radius, x + radius, 

y + radius), 
                    radii, Direction.CW);
canvas.drawPath(path, pathPaint);
4

1 に答える 1