Android QN: изменение цвета краски без изменения ранее нарисованных линий

Я хочу создать приложение для рисования, которое позволяет пользователю рисовать разными цветами. Я могу придумать все, кроме изменения цвета.

У меня есть начальная красная краска, чтобы нарисовать несколько линий, и когда я меняю цвет на зеленый, все ранее нарисованные линии меняются. Я хочу, чтобы ранее нарисованные линии сохраняли свой красный цвет, а новые линии были нарисованы зеленым цветом.

    canvas.drawPath(mPath, mPaint);

Я использую метод canvas.drawPath для рисования вместе с краской mPaint. но когда я меняю цвет mPaint, все тоже меняет цвет.

Я пытался просматривать Интернет, но ничего не мог найти, и я уже потратил очень много времени, чтобы понять это. Пожалуйста помоги.


person May Yong    schedule 26.10.2011    source источник


Ответы (2)


Вы можете использовать этот код в своем основном классе, он будет вам очень полезен.

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));

mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(0xFFFF0000);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(3);
 }
 private Paint mPaint;
 private MaskFilter mEmboss;
 private MaskFilter mBlur;
 public void colorChanged(int color) {
 mPaint.setColor(color);
 }
person Android Help    schedule 26.11.2012
comment
Как бы я применил это с помощью stackoverflow .com/questions/18521661/ - person Si8; 30.08.2013

Почему бы просто не перейти на новую краску, а не изменить цвет существующей краски?

person Michael    schedule 06.03.2012
comment
Как мне перейти на новую краску? - person Si8; 30.08.2013
comment
Создание объектов Paint дорого обходится с точки зрения производительности. Переключение на другой предварительно созданный объект Paint также не дает эффекта. - person Glenn Bech; 17.07.2015