我有一个类,它使用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);
}
我不明白我做错了什么。为什么它不会填满?
p.setColor(color);
中的"颜色"可能是透明的。确保颜色例如0xffRRGGBB
也不需要path.moveTo((int)tanX, (int)cosY);
。前面的lineTo()
可以完成这项工作。