Вопрос

В моем приложении пользователь может создать несколько объектов (так называемых рисунков), каждый из которых имеет OudkoreNkCANVAS, очень похожее с фотопадом (приложение Photo Paint) в Skksamples (предоставленные MS Spearch SP1 SDK). Что было бы лучшим способом сохранить содержание чернила (объект рисунка), учитывая тот факт, что могут быть десятки или даже сотни из них созданы.

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

можно было бы сохранить точки в базе данных (предпочтительно SQLite)?

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

Это было полезно?

Решение 2

Уже есть формат, который Microsoft использует для сохранения ударов, который является ISF - стоящий для сериализованного формата Ink, который сохраняет коллекцию штрихов в файле .isf.

Однако в Это пример каждый рисунок сохраняется в отдельном(Но маленький размер) .isff-файл, который может быть легко загружен назад для дальнейшего редактирования или даже преобразования (экспортировать) его для растрового изображения.

Так что хороший метод будет сохранять каждый рисунок в файлах (даже если это немного дороже, время - мудрый, чем просто хранить его в SQLite DB) и сохранить путь каждого наряду с идентификатором вбаза данных для идентификации каждого сеанса. Любое предложение для дальнейшего оптимизации этого метода от точки зрения масштабируемости?

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

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

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

Вы также сможете использовать XAMLWERITER / XAMLEADER, чтобы просто сериализовать все Inkcanvas в XML, но вам нужно будет в состоянии поставить новый десериализованный экземпляр в свой интерфейс UI и убедитесь, что нет никаких осложнений именования или ресурсов вВаш XAML, который, как правило, вызывает ошибки с этим методом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top