В некоторых приложениях для рисования или заметок они позволяют добавлять текст и изображения в дополнение к материалам для рисования.
Теперь я знаю, что могу создать собственное представление и переопределить события касания, а также построить пути и нарисовать их на холсте.
Но вот чего я не знаю: в приложениях, подобных упомянутым выше, я не понимаю, добавляют ли они изображения в качестве представлений изображений или добавляют изображения, непосредственно нарисованные на холсте.
Я имею в виду, создают ли они новое изображение и устанавливают для него изображение галереи, или они просто добавляют изображение прямо на холст.
Есть предположения?
Спасибо.
Они рисуют его прямо на холсте. Обратите внимание, что класс Canvas (именно так рисуют представления) имеет функции drawBitmap и drawText. Как правило, в приложении для рисования вся область, на которой вы рисуете, представляет собой только один вид.
Любой вид перетаскивания, который вам нужно будет реализовать полностью самостоятельно.
да, я понимаю, но допустим, что я добавил 4 изображения из галереи на холст, тогда как мне сообщить холсту, к какому изображению я прикоснулся или с которым взаимодействовал?
Тебе придется все это сделать. Вы бы поместили обработчик касания в представление, вам нужно было бы помнить, какие изображения и где находятся, и вам нужно было бы выполнить обнаружение попаданий.
так что проще просто добавить изображения как обычные виды вместо того, чтобы наклеивать их на холст?
Нет, наверное, нет. Но вы пытаетесь реализовать довольно продвинутую функциональность, а это значит, что вам действительно нужно написать код. \
Да, я знаю это, но меня смущает, почему эти приложения для рисования не просто добавляют изображения в виде представлений ... потому что тогда обнаружение изображений будет намного проще, чем вычисление областей вероятности и обнаружение попаданий.
Поскольку обнаружение попаданий для изображений довольно просто, а использование разных представлений усложняет многие вещи (композитинг для сохранения на диск, упорядочение по z, рисование поверх этих растровых изображений и т. д.)
Ага, понятно, у вас есть какой-нибудь совет, как я могу обнаружить вещи на холсте и переместить их?
Вы храните Список графических элементов, которые имеют координаты x, y, ширину и высоту того места, где они находятся на экране (и, конечно же, ссылку на сам объект - растровое изображение или строку). Затем обнаружение попадания - это просто просмотр списка и проверка, находятся ли x, y события касания между x и x + шириной и y и y + высотой.
Ах, это отличная идея ... но в случае, когда у нас есть 3 изображения в одной позиции, они будут иметь одинаковые координаты?
Тогда вы не прекращаете прогулку на первом совпадении, а запоминаете лучшее совпадение и используете вторичный критерий для выбора. Возможно z заказ. Или выберите самое маленькое изображение, исходя из теории, что если бы вы хотели большее, вы бы коснулись его части, которая не перекрывается.
Это очень хорошие и умные идеи, о которых вы подумали, большое спасибо. Это означает, что после того, как я успешно определил положение, я смотрю его на что-то вроде карты или около того ... чтобы увидеть связанный с ним объект, а затем я просто перевести этот объект?
Спасибо за ваш ответ, но просто чтобы понять, когда мы добавляем на холст такие вещи, как изображение, текст, путь ... Нам нужно как-то ссылаться на них с определенным идентификатором, чтобы перетащить их или щелкнуть по ним ... так как можно мы даем им идентификаторы?