Это решает это тогда. Благодарю.

еюсь, что методы saveLayer позволят мне рисовать на разных «слоях», а затем, когда рисование закончится, объединить слои с холстом в любом порядке, который я выберу.

Очевидный вопрос: «Почему бы вам просто не переставить операции рисования?» Ответ не могу:

У меня есть Путь, который мне нужно нарисовать на холсте. В фоновом / нижнем z-индексе я хочу нарисовать закрытый путь с несколькими дополнительными точками, используя стиль заливки. Кроме того, я хочу нарисовать контур только тех точек, которые были изначально на Пути.

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

Похоже, что saveLayer () предлагает такую ​​функциональность, но не работает так, как я ожидал. Основной поток моих операций выглядит так:

int overlay = canvas.saveLayer(...);
// drawing operations for my uppermost layer
...

int background = canvas.saveLayer(...);
// drawing operations for my background layer
...

// merge the offscreen background bitmap with the canvas:
canvas.restoreToCount(background);

// merge the offscreen overlay bitmap with the canvas:
canvas.restoreToCount(overlay);

Когда код выполняется, порядок фона и наложения не изменился вообще; то, что рисуется первым, находится внизу, а то, что рисуется последним, находится сверху. Еще более странным для меня является то, что я могу полностью закомментировать оба вызова restoreToCount (), и ничего не меняется. Согласно Javadoc, ничто не должно быть нарисовано на холсте до тех пор, пока не будет вызвано восстановление баланса ().

Очевидно, я совершенно не понимаю функцию этого метода. Кто-нибудь может помочь мне понять использование saveLayer, или, возможно, предложить альтернативный способ наложения моих операций рисования?

Спасибо! Ник

Ответы на вопрос(1)

Ваш ответ на вопрос