Android:星路径不会填充

时间:2017-08-06 04:49:00

标签: android canvas path shape

我有一个使用Path创建Star的类,此代码如下:

public Star(int x, int y, int size) {
    this.x = x;
    this.y = y;
    this.size = size;
    rotateSpeed = 1.5f;

    path = new Path();
    path.moveTo(x, y-size);
    for(int i = 1; i < 11; i++) {
        double radius;
        if(i % 2 == 0)
            radius = size;
        else
            radius = size/2.2;
        double angleRad = Math.toRadians(360/10) * i;
        double cosY = y - (Math.cos(angleRad) * radius);
        double tanX = x + (Math.sin(angleRad) * radius);
        path.lineTo((int)tanX, (int)cosY);
        path.moveTo((int)tanX, (int)cosY);
    }
    path.setLastPoint(x, y-size);
}

问题在于它只绘制了它的轮廓并且实际上没有填充它,尽管我明确说明了paint.setStyle(Paint.Style.FILL);

我的绘图代码是:

public void drawObject(Canvas canvas, boolean antialias) {
    Paint p = new Paint();
    p.setStyle(Paint.Style.FILL);
    p.setAntiAlias(antialias);
    p.setColor(color);
    canvas.drawPath(path, p);

    //Outline
    p.setStyle(Paint.Style.STROKE);
    p.setStrokeWidth(5);
    p.setColor(Color.BLACK);
    canvas.drawPath(path, p);
}

我不明白我做错了什么。为什么不会填补它?

1 个答案:

答案 0 :(得分:0)

可能&#34;颜色&#34;在p.setColor(color);中是透明的。确保颜色为例如0xffRRGGBB

也不需要path.moveTo((int)tanX, (int)cosY);。前面的lineTo()完成了这项工作。