【问题标题】:How to draw the contour of a union of Path如何绘制路径并集的轮廓
【发布时间】:2014-03-28 23:44:31
【问题描述】:

您好,我有一包六边形路径,并且想要绘制这些路径联合的轮廓(边框)。我想过使用区域,将路径联合在一起,然后使用 getBoundaryPath() 获取边界结果路径,但它什么也没画。 那么有人可以告诉我如何获得所有 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;
}

【问题讨论】:

    标签: java android android-canvas


    【解决方案1】:

    尝试使用

    Path outline = region.getBoundaryPath();
    Path newpath = new Path();
    Matrix matrix = new Matrix();
    matrix.setScale(1, 1, 0, 0);
    outline.transform(matrix,newpath);
    canvas.drawPath(newpath, paint);
    

    而不是直接使用 getBoundaryPath

    【讨论】:

    • 这对我有用,知道为什么 getBoundaryPath 返回的路径不起作用吗?
    • 当调用 getBoundaryPath(没有方法参数)时,它会实例化一个新的路径。
    猜你喜欢
    • 1970-01-01
    • 2013-12-20
    • 2019-10-11
    • 1970-01-01
    • 2021-09-07
    • 2018-07-09
    • 2016-02-15
    • 2013-08-16
    • 1970-01-01
    相关资源
    最近更新 更多