Android Canvas: можно ли добавлять изображения из галереи?

В некоторых приложениях для рисования или заметок они позволяют добавлять текст и изображения в дополнение к материалам для рисования.

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

Но вот чего я не знаю: в приложениях, подобных упомянутым выше, я не понимаю, добавляют ли они изображения в качестве представлений изображений или добавляют изображения, непосредственно нарисованные на холсте.

Я имею в виду, создают ли они новое изображение и устанавливают для него изображение галереи, или они просто добавляют изображение прямо на холст.

Есть предположения?

Спасибо.

0
0
188
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Спасибо за ваш ответ, но просто чтобы понять, когда мы добавляем на холст такие вещи, как изображение, текст, путь ... Нам нужно как-то ссылаться на них с определенным идентификатором, чтобы перетащить их или щелкнуть по ним ... так как можно мы даем им идентификаторы?

data 28.09.2018 03:26

Любой вид перетаскивания, который вам нужно будет реализовать полностью самостоятельно.

Gabe Sechan 28.09.2018 03:28

да, я понимаю, но допустим, что я добавил 4 изображения из галереи на холст, тогда как мне сообщить холсту, к какому изображению я прикоснулся или с которым взаимодействовал?

data 28.09.2018 03:30

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

Gabe Sechan 28.09.2018 03:30

так что проще просто добавить изображения как обычные виды вместо того, чтобы наклеивать их на холст?

data 28.09.2018 03:31

Нет, наверное, нет. Но вы пытаетесь реализовать довольно продвинутую функциональность, а это значит, что вам действительно нужно написать код. \

Gabe Sechan 28.09.2018 03:32

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

data 28.09.2018 03:35

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

Gabe Sechan 28.09.2018 03:40

Ага, понятно, у вас есть какой-нибудь совет, как я могу обнаружить вещи на холсте и переместить их?

data 28.09.2018 03:47

Вы храните Список графических элементов, которые имеют координаты x, y, ширину и высоту того места, где они находятся на экране (и, конечно же, ссылку на сам объект - растровое изображение или строку). Затем обнаружение попадания - это просто просмотр списка и проверка, находятся ли x, y события касания между x и x + шириной и y и y + высотой.

Gabe Sechan 28.09.2018 03:49

Ах, это отличная идея ... но в случае, когда у нас есть 3 изображения в одной позиции, они будут иметь одинаковые координаты?

data 28.09.2018 03:51

Тогда вы не прекращаете прогулку на первом совпадении, а запоминаете лучшее совпадение и используете вторичный критерий для выбора. Возможно z заказ. Или выберите самое маленькое изображение, исходя из теории, что если бы вы хотели большее, вы бы коснулись его части, которая не перекрывается.

Gabe Sechan 28.09.2018 03:54

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

data 28.09.2018 03:59

Другие вопросы по теме