Question

Dans ma candidature, l'utilisateur peut créer plusieurs objets (appelé dessins) chacun d'un superficiel, très similaire avec le photopad (l'application de peinture photo) dans les SDksamples (fournie par MS Surface SP1 SDK). Quelle serait la meilleure façon de sauvegarder le contenu de l'inkcanvas (l'objet de dessin) étant donné qu'il peut y avoir des dizaines ou même des centaines d'entre eux.

Après quelques recherches, une option a sauté: la convertir en une image, JPG ou PNG, mais cette méthode ne semble pas que l'IMO évolutif.

serait-il possible de stocker les points dans une base de données (de préférence SQLite)?

L'objectif est de pouvoir restaurer les dessins (contenus des encrs) pour une modification ultérieure lors du chargement.

Était-ce utile?

La solution 2

Il y a déjà un format que Microsoft utilise pour sauver les traits dans, qui est ISF - debout pour un format sérialisé de l'encre qui enregistre la collection Strokes dans un fichier .isf.

Cependant, dans Cet exemple Exemple Chaque dessin est enregistré dans un(Mais de petite taille) .Aff Fichier qui peut être facilement chargé pour une modification ultérieure ou même la conversion (exportation) en bitmap.

Une bonne méthode serait donc de sauvegarder chaque dessin dans les fichiers (même s'il s'agit d'un peu plus cher, du temps sage, que de le stocker simplement dans un DB SQLite) et de sauvegarder le chemin de chacun avec un identifiant dans lebase de données pour identifier chaque session. Toute suggestion d'optimisation de cette méthode à partir d'un point de vue de l'évolutivité?

Autres conseils

L'épargne à une image n'est pas vraiment viable pour ce qu'il semble que vous souhaitiez faire car la restauration des lignes de vecteur d'un bitmap est beaucoup plus difficile et potentiellement pertinente que la conversion de vecteur à bitmap, en plus de ne pas être très efficace d'unperspective de densité de données.

Vous pouvez écrire du code pour enregistrer et restaurer la collection de lignes stockées dans la propriété Strokes.Cela vous permettrait de réduire la taille de vos données à un minimum et de stocker facilement dans une base de données.Chaque AVC a des données sur ce que la ligne ressemble à la ligne et à un ensemble de points qui composent la ligne.Il est assez simple d'extraire et de restaurer ces données sur un autre encr d'encolvas lors du rechargement.

Vous pouvez également utiliser xamlwriter / xamlreader pour simplement sérialiser l'intégralité des encrs à XML, mais vous auriez besoin de pouvoir placer la nouvelle instance désérialisée dans votre UI et veiller à ce qu'il n'y ait aucune complication de nommage ou de ressources dansvotre xaml qui tendent à causer des erreurs avec cette méthode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top