Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Лупа в своём приложении 
:(
    Опции темы
rlepricon
Дата 18.7.2017, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 25.4.2006

Репутация: нет
Всего: нет



Добрый день.

Пишу небольшую логическую игру.
Так как пальцами закрываю перемещаемые фигурки на экране и не видно куда их перемещать, возникла идея сделать увеличение и копирование (дублирование) области под пальцем над игровым полем.
Но никак не могу разобраться как скопировать canvas экрана:

Код

while(gameRunning) {
            Canvas canvas = null;
            try {
                canvas = surfaceHolder.lockCanvas(null);
                synchronized (surfaceHolder) {
                    bg.draw(canvas);
                    //рисование элементов игры
                }
            } finally {
                if (canvas != null) {
                    surfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
        }
 

Как скопировать часть экрана и вывести его на экран выше игрового поля?

Спасибо!
PM MAIL   Вверх
iillyyaa2033
Дата 18.7.2017, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2017

Репутация: нет
Всего: нет



Здравствуйте!

Один из вариантов выглядит так:
    1. Создаем новый bitmap и холст (canvas):
    Код

    Bitmap  bitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas2 = new Canvas(bitmap);


    2. Выполняем полную или частичную отрисовку элементов:
    Код

    synchronized (surfaceHolder) {
        bg.draw(canvas);
        //рисование элементов игры

        bg.draw(canvas2);
       //рисование элементов игры на canvas2
    }


    3. Передаем bitmap в другую вьюху, если надо

    4.  Рисуем bitmap
    Код

    Rect src = null; // Прямоугольник, какую часть битмапа рисуем
    Recf dst = null; // Прямоугольник, куда рисуем на canvas
    // paint - любая кисть

    canvas.drawBitmap(bitmap, src, dst, paint);


Это сообщение отредактировал(а) iillyyaa2033 - 18.7.2017, 22:15
PM MAIL   Вверх
rlepricon
Дата 18.7.2017, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 25.4.2006

Репутация: нет
Всего: нет



Спасибо огромное smile
Рецепт с отдельным канвасом помог!

К сожалению, не могу плюсануть, но очень благодарен!
PM MAIL   Вверх
iillyyaa2033
Дата 19.7.2017, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.6.2017

Репутация: нет
Всего: нет



Обращайтесь)

Покажете, когда программа будет готова?
PM MAIL   Вверх
rlepricon
Дата 16.9.2017, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 25.4.2006

Репутация: нет
Всего: нет



Цитата(iillyyaa2033 @ 19.7.2017,  10:50)
Обращайтесь)

Покажете, когда программа будет готова?

Вот что получилось:
https://play.google.com/store/apps/details?...ts.android.game

Над дизайном пока работаю smile.
Если интересно, поделюсь исходниками.

Это сообщение отредактировал(а) rlepricon - 16.9.2017, 10:31
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.1672 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.