Вид Выберите фоновое изображение и нарисуйте его - PullRequest
0 голосов
/ 17 декабря 2018

Я создал класс, который расширяет View.Я рисую на этом.Работает как положено.Теперь я хочу выбрать изображение из галереи и настроить его рисовать над ним.Я устанавливаю изображение на растровое изображение холста, как только оно выбрано.

Bitmap bitmap= BitmapFactory.decodeStream(inputStream);
mdb.mExtraBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

mdb - это объект этого пользовательского View.

Вот onSizeChanged метод View.

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
   super.onSizeChanged(w, h, oldw, oldh);
   mExtraBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
   mExtraCanvas = new Canvas(mExtraBitmap);
   mExtraCanvas.drawColor(WHITE);
}

А вот код внутри onDraw метода

super.onDraw(canvas);
canvas.drawBitmap(mExtraBitmap, 0, 0, null);

В методе onTouchEvent при рисовании путей на mExtraCanvas.Проблема в том.1. Изображение установлено, но не может рисовать на нем.2. Масштабируйте изображение, чтобы покрыть.Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Вам просто нужно нарисовать выбранное изображение на mExtraCanvas

mdb.mExtraCanvas.drawBitmap(image, 0, 0, null)

И для масштабированной части создайте масштабированное растровое изображение типа.

Bitmap.createScaledBitmap(image, 
mdb.mExtraBitmap.getWidth(), 
mdb.mExtraBitmap.getHeight(), false);
0 голосов
/ 17 декабря 2018

Не проверено.Но должно работать.

Собственно, что происходит, после того, как набор mdb.mExtraBitmap, onSizeChanged вызван.И новое растровое изображение, созданное с помощью Bitmap.createBitmap.

, меняет метод onSizeChanged() на приведенное ниже.

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    mExtraBitmap = Bitmap.createScaledBitmap(mExtraBitmap,w, h,false);
    mExtraCanvas = new Canvas(mExtraBitmap); 
}

И не нужно снова рисовать растровое изображение, поскольку вы создаете холст из растрового изображения.

Используйте mExtraCanvas для каждого рисунка вместо других canvas.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...