Можно ли получить доступ к базовым элементам пользовательского интерфейса Xamarin с помощью SkiaSharp?

В кросс-платформенном приложении Xamarin.Forms я хотел бы добавить SKCanvas поверх других элементов пользовательского интерфейса, чтобы пользователь мог рисовать, например. на изображениях. Я знаю, что можно загрузить изображение непосредственно в SKCanvas, но изображения — не единственное приложение, которое мне нужно.

Идеальным решением была бы возможность загрузки базового содержимого страницы, включая все ее элементы пользовательского интерфейса, в Canvas/Surface, чтобы пользователь мог затем рисовать на нем и сохранять рисунок + базовое содержимое в изображение (вероятно, используя метод снимка?).

Это возможно?


person Markus Schlaffer    schedule 16.06.2017    source источник
comment
То есть вам в принципе нужен скриншот текущего макета и загрузить его в SkiaSharp?! Какие платформы вы хотите поддерживать?   -  person Malte Goetz    schedule 16.06.2017
comment
@MalteGoetz вроде как да, но это также должно быть в реальном времени. все три мобильные платформы xamarin.forms, т. е. android, ios, uwp   -  person Markus Schlaffer    schedule 16.06.2017
comment
в реальном времени может быть сложно, единственное, о чем я мог думать, это постоянное создание скриншотов, чтобы приблизиться к реальному времени. Тогда для скриншота нужна реализация для конкретной платформы, но это должно работать для Android, iOS и UWP.   -  person Malte Goetz    schedule 16.06.2017


Ответы (1)


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

Я добавил прозрачный холст поверх моего контента, чтобы нижележащее содержимое отображалось через холст, но все на холсте всегда было нарисовано поверх. Рисунки сохранялись и передавались отдельно от контента, а при необходимости перерисовывались. По запросу, когда пользователю нужно было экспортировать оба вместе для функции моментального снимка/совместного использования/экспорта, я затем загружал базовый контент в виде изображения на холст и экспортировал его вместе с рисунками с холста в новое изображение.

person Markus Schlaffer    schedule 15.11.2019