очистить рисование холста программно Android

проблема с i'v с canvas.draw() У меня есть несколько кадров для наложения на одно и то же растровое изображение. и мне это удается. но проблема заключается в том, что теперь нужно применять другой фрейм с использованием тех же методов, но с другой границей, границы оверлеют старые.

    void hm(){
    Bitmap border = BitmapFactory.decodeResource(getResources(), R.drawable.vignette2);
    int width = bmp.getWidth();
    int height = bmp.getHeight();
    change = Bitmap.createScaledBitmap(change, width, height, false);
    Canvas canvas = new Canvas(change);
    Bitmap scaledBorder = Bitmap.createScaledBitmap(border,width,height, false);
    canvas.drawBitmap(scaledBorder, 0, 0,null);
    //canvas.drawBitmap(k, 0, 0, null);
    view.setImageBitmap(change);
    }

и вот другой способ:

    void hm1(){
    Bitmap border = BitmapFactory.decodeResource(getResources(), R.drawable.white);
    int width = bmp.getWidth();
    int height = bmp.getHeight();
    change = Bitmap.createScaledBitmap(change, width, height, false);
    Canvas canvas = new Canvas(change);
    Bitmap scaledBorder = Bitmap.createScaledBitmap(border,width,height, false);
    canvas.drawBitmap(scaledBorder, 0, 0,null);
    //canvas.drawBitmap(k, 0, 0, null);
    view.setImageBitmap(change);
    } 

теперь, когда я нажимаю кнопку button1 , оверлей применяется к представлению. и когда я нажимаю кнопку button2 , это также относится к просмотру, но не разрушает старую границу («Наложение изображения»). Я знаю, что я должен использовать разные растровые изображения для обработки каждого вида изображения. но я использую кнопку сохранения, которая сохранит изменение Bitmap change , что означает, что я хочу применить границы на этом изображении и отобразить его. без наложения старых границ.
например, я использую QuickAction , и вот как я пытаюсь выполнить клики.

                if (actionId == border0){
                hm();
                } 

             if (actionId == border1 ){
                 hm1();
                } 

              if (actionId == border2 ){
              }

он работает, но, как я сказал, он накладывает старые. любая помощь будет благодарна. заранее спасибо. Решив это завтра, я отправлю ответ :).

0
nl ja de

1 ответы

Ну, вы создаете новый растровый рисунок на основе старого с этой строкой:

change = Bitmap.createScaledBitmap(change, width, height, false);

Поэтому убедитесь, что вы как-то сбросили растровое изображение change с оригиналом:

change = Bitmap.createScaledBitmap(originalBitmap, width, height, false);
2
добавлено
и как это? У меня проблема с этой проблемой, и я не мог понять это. !!! если я создаю новый растровый рисунок на основе старого. это будет сохранено как изменение или нет?
добавлено автор k0sh, источник
изменение на самом деле растровое изображение от оригинального !!!! .., что означает, прежде чем я хочу добавить фрейм, есть что-то, что я сделал с (изменение битмапа). Я знаю, что мне нужно создать новое растровое изображение для createScaledBitmap из этого изменения, но я ищу другой способ без необходимости использования другого растрового изображения. потому что если бы я сделал, то я создал для него метод сохранения, и если бы я сделал это, то он не выглядел профессиональным, потому что я уже спрашиваю пользователя, когда он нажимает save. я не хочу добавлять третий вопрос, который заставит его сосать!
добавлено автор k0sh, источник
да, если это так. о методе сохранения уже удается выполнить его, прежде чем я даже начну кодировать свое приложение. это не проблема. ну, я вынужден использовать другое растровое изображение и уже сделал это. Я играю с методом сохранения сейчас, если я поставлю change = newBitmap; он сохранит растровое изображение с границей, но когда нет границы, он сохранит его BLANK. попробовал, если (change == newBitmap) сохранить изменения как newBitmap, иначе сохранить изменения в качестве их изменения. но не получится !!!
добавлено автор k0sh, источник
ну, я понял, я сохранял Bitmap как растровое изображение, а не как растровое изображение. : D позже опубликует мой ответ спасибо за вашу помощь :)
добавлено автор k0sh, источник
Где бы вы ни впервые вносили change . Держите его и используйте там. Обновление ответа
добавлено автор WarrenFaith, источник
Затем вы должны рассмотреть другой подход. Во всяком случае: вы не можете рисовать оригинал один раз, не ожидая, что предыдущий рисунок будет по-прежнему видимым. Звучит скорее как беспорядочный рабочий поток в вашем приложении. Подумайте, пожалуйста, в другое время о сохранении ...
добавлено автор WarrenFaith, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)