爪哇改变油漆的颜色会改变所有的颜色
因此,我试图制作一个adroid应用程序,在touchevent发生时绘制一系列圆圈。如果我在屏幕的左边画,它应该画一个绿色的圆圈,如果它在右边,它应该画一个蓝色的圆圈。应用程序正在这样做,但它会更改所有已绘制圆的颜色。因此,我制作了一个Draw circle类和一个对象数组列表,将每个cricle视为一个单独的对象,即使在一次润色活动之后仍然无法工作。下面给出了它的代码
private class Drawcirlce {
public Drawcirlce(Canvas c) {
// TODO Auto-generated constructor stub
for (Point point : points) {
if(flag==true)
c.drawCircle(point.x, point.y, 5, paint);
else
c.drawCircle(point.x, point.y, 5, p2);
}
invalidate();
}
/*for (Point point : points) {
if(flag==true)
mcan.drawCircle(point.x, point.y, 5, paint);
else
mcan.drawCircle(point.x, point.y, 5, p2);
}*/
}
public void onDraw(Canvas canvas) {
i++;
//Drawcirlce d=new Drawcirlce();
dc.add(new Drawcirlce(canvas));
Log.d(TAG, "i: " + i);invalidate();
}
public boolean onTouch(View view, MotionEvent event) {
// if(event.getAction() != MotionEvent.ACTION_DOWN)
// return super.onTouchEvent(event);
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
if(point.x>200){
paint.setColor(Color.BLUE);
flag=true;
}
else{
p2.setColor(Color.GREEN);
flag=false;
}
points.add(point);
//dc.add(new Drawcirlce(mcan));
invalidate();
Log.d(TAG, "point: " + point);
return true;
}
public boolean onTouch(View view, MotionEvent event) {
// if(event.getAction() != MotionEvent.ACTION_DOWN)
// return super.onTouchEvent(event);
Point point = new Point();
point.x = event.getX();
point.y = event.getY();
if(point.x>200){
paint.setColor(Color.BLUE);
flag=true;
}
else{
p2.setColor(Color.GREEN);
flag=false;
}
points.add(point);
//dc.add(new Drawcirlce(mcan));
invalidate();
Log.d(TAG, "point: " + point);
return true;
}
有人知道我做错了吗,或者有没有办法解决这个问题
# 1 楼答案
你的
Drawcirlce
类需要有一个Paint
对象。(您可以将其公开给类,或者将其getPaint()
和setPaint()
,以两者为准。)然后,当调用c.drawCircle(point.x, point.y, 5, paint);
时,用类中的Paint
对象调用它比如:
然后,在
onTouch
事件中,您可以这样做:最后,您必须更改
onDraw
事件这段代码实际上赋予了一个圆拥有自己的
Paint
对象的能力。然后,当触摸时,你创建一个Paint
来给予它。最后,在绘图时,使用该Paint
而不是当前的