2

こんにちは、六角パスのパックがあり、それらのパスの結合の輪郭 (境界線) を描画したいと考えています。Region を使用して Path を結合し、getBoundaryPath() で結果の Path の境界線を取得することを考えましたが、何も描画しません。それで、誰かが私にすべての Path オブジェクトの結合の輪郭(境界線)をどのように持つことができるか教えてもらえますか?

 @Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    // if (pmBack != null) {
    // canvas.drawBitmap(pmBack, new Matrix(), paint);
    // }

    if (mCells != null) {

        for (int i = 0; i < mCells.length; i++) {
            final HexCell cell = mCells[i];
            if (cell != null) {
                final PointF p = cell.getDrawPoint();
                paint.setColor(cell.mColor);

                Path path = drawHexagon(cell.mSize, mCenterX + p.x, mCenterY + p.y);
                canvas.drawPath(drawHexagon(cell.mSize, mCenterX + p.x, mCenterY + p.y), paint);

                if (i == 0) {
                    region.setPath(path, mClip);
                } else {
                    region2.setPath(path, mClip);
                    region.op(region2, Op.UNION);
                }
            }
        }
        canvas.drawPath(region.getBoundaryPath(), paintContour);
    }

}

private Path drawHexagon(final float size, float centerX, float centerY) {
    Path path = new Path();
    for (int i = 0; i <= 6; i++) {
        double angle = 2 * Math.PI / 6 * (i + 0.5);
        float x_i = (float) (centerX + size * Math.cos(angle));
        float y_i = (float) (centerY + size * Math.sin(angle));
        if (i == 0) {
            path.moveTo(x_i, y_i);
        } else {
            path.lineTo(x_i, y_i);
        }
    }

    return path;
}
4

1 に答える 1