我得到了一个奇怪的错误,我无法使用Color对象设置绘图对象的颜色,这很奇怪看paint.setColor(Color.RED)
有效,而paint.setColor(this.color)
不是
这是我的代码。
public class Shape{
protected GameView2 game_view;
protected int x;
protected int y;
protected int width;
protected int height;
protected Color color;
public Shape(GameView2 game_view, Color color, int x, int y, int width, int height) {
this.game_view = game_view;
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.color = color;
}
public void onDraw(Canvas canvas){
Paint paint = new Paint();
Rect rec = new Rect(x, y, x + width, y + height);
paint.setColor(this.color); //does not work
paint.setStyle(Paint.Style.FILL);
canvas.drawRect(rec, paint);
}
}
修改
Shape对象已被声明为另一个名为GameView的类, 它非常大,所以我不会粘贴整个类,但在创建一个Shape对象时,这就是完成的事情:
new Shape(this, Color.BLACK, 0, 0, 100, 100)
我得到的错误是incompatible types: Color cannot be converted to int
答案 0 :(得分:3)
setColor
需要 int 类型,但 this.color
不是 int
,您尝试设置颜色对象而不是int值。
public native void setColor(int color);
答案 1 :(得分:1)
查看documentation,您会发现Color
是一个实用程序类,它提供静态方法来处理颜色整数。您实际上可以实例化Color
对象似乎是一个历史错误。
答案 2 :(得分:0)
您如何将Color
传递给新的Shape
?
你应该使用
getResources().getColor(R.color.idcolor);
在xml中:
<color name="idcolor">#123456</color>
修改强>
根据您的编辑,尝试将颜色声明为int
。颜色实际上是int
,主要颜色在Color
protected int color;