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