В настоящее время у меня есть настраиваемое представление, где оно должно рисовать себя в дочернем регионе, в основном растровом изображении.
Размер основного растрового изображения больше, чем область рисования пользовательского вида.В настоящее время так выглядит мой код.Хотя это работает, я считаю, что должен быть способ его дальнейшей оптимизации.
// Code in a custom View
private fun getBitmap(): Bitmap {
val resources = context.resources
// Creating a larger master bitmap.
val screenWidth = resources.getDisplayMetrics().widthPixels;
val screenHeight = resources.getDisplayMetrics().heightPixels;
val masterBitmap = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888)
val masterCanvas = Canvas(masterBitmap)
masterCanvas.drawColor(Color.WHITE)
// Creating a smaller child bitmap.
val childBitmap = Bitmap.createBitmap(
masterBitmap,
(screenWidth-width) shr 1,
(screenHeight-height) shr 1,
width,
height
)
// Perform drawing on smaller child bitmap.
val childCanvas = Canvas(childBitmap)
draw(childCanvas)
// Copy the smaller child bitmap back to larger master bitmap.
masterCanvas.drawBitmap(
childBitmap,
((screenWidth-width) shr 1).toFloat(),
((screenHeight-height) shr 1).toFloat(),
Paint()
)
}
Итак, этот шаг можно суммировать следующим образом:
- Создание большего основного растрового изображения.
- Создание дочернего растрового изображения меньшего размера.
- Выполнение рисования на дочернем растровом изображении меньшего размера.
- Копирование дочернего растрового изображения меньшего размера обратно в увеличенное главное растровое изображение.
Мне было интересно, есть ли способ исключить шаг 4: Скопируйте меньший дочерний растр обратно в больший мастер-растровое изображение. ?
Можно ли создать дочернее растровое изображение, которое его памяти данныхобласть напрямую разделяет одну и ту же область памяти данных основного растрового изображения?Так же, Bitmap.createBitmap
создаст новый экземпляр Bitmap с вновь выделенной памятью.
Мои желаемые шаги:
- Создание большего основного растрового изображения.
- Созданиеменьший дочерний растровый файл, который отображается непосредственно на увеличенный главный растровый рисунок.
- Выполнение рисования на меньшем дочернем растровом изображении.Это сразу же повлияет на более крупное главное растровое изображение во время процесса рисования дочернего растрового изображения.
Мне было интересно, есть ли какой-либо API, позволяющий мне Создание меньшего дочернего растрового изображения путем сопоставления непосредственно с большим основным растровым изображением.?