【问题标题】:Android: Star path will not fillAndroid:星路径不会填充
【发布时间】:2017-08-06 04:48:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: android canvas path shape


    【解决方案1】:

    p.setColor(color); 中的“颜色”可能是透明的。确保颜色是例如0xffRRGGBB

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

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多