Tirage de Chemin sur la toile à l'aide de graphiques vectoriels, pas de bitmap?
Actuellement, Im coder une petite application qui permet de doigt-de la peinture sur une image donnée. Im actuellement en train de faire cela par l'instanciation d'une image de la même taille que l'image d'arrière-plan, puis la création d'une toile avec cette image. Sur cette toile est ensuite établi.
C'est tout de travail et, ok, mais il serait plus agréable d'avoir le tirage au sort des graphiques sous forme de données vectorielles, et non pas sous forme d'images, de sorte que l'utilisateur peut ensuite zoomer sans laide étapes en lignes etc.
Est-ce possible en quelque sorte?
OriginalL'auteur stk | 2011-05-10
Vous devez vous connecter pour publier un commentaire.
Absolument. Il y a un certain nombre de cours que vous auriez bénéficier de l'apprentissage, mais les deux pour commencer le Chemin et de la Peinture. Très basiquement, pour chaque chemin dans votre dessin vous instanciez un Chemin et un appel à diverses méthodes sur ce Chemin pour ajouter des lignes, des arcs de cercles, rectangles, etc. Ensuite, chaque Chemin peut être ajouté à votre Toile. Chaque fois que vous ajoutez un Chemin d'accès à votre Toile, vous spécifiez une Peinture de l'objet à utiliser. La Peinture de l'objet contient toutes sortes d'informations sur la façon dont le chemin d'accès doit être effectivement rendus sur la Toile, y compris la largeur du trait, la couleur, si un accident vasculaire cérébral, de contour et de remplissage, ou tout simplement de remplir; et ainsi de suite.
L'ajout de graphiques de vecteur pour le Canevas à l'aide de Chemins d'accès, la Peinture, etc. est très simple et vous aurez probablement obtenir le blocage de celui-ci dans un court laps de temps. J'ai trouvé un tutoriel appelé le Android Vintage Thermomètre a été une excellente façon d'apprendre; c'est là que j'ai commencé.
Une fois que vous avez le coup de dessin en ligne droite chemins d'accès à la Toile, peut-être la prochaine étape consiste alors à traduire vos événements à écran tactile en une série de petits chemin en ligne droite segments.
Edit:
Ok, donc à partir de votre commentaire, je comprends maintenant que vous êtes familier avec Android le Chemin, etc. et j'ai raté le point. Maintenant, je comprends le problème, je pense: ce que vous voulez faire est de stocker tous les graphiques dessinés comme vecteur de données en mémoire, de sorte qu'une fois que les chemins d'accès ont été générés (en réponse à l'utilisateur des doigts), ces chemins seront conservés dans la mémoire comme vecteur de données de sorte qu'ils puissent être récupérés et dessiné sur la toile à différentes échelles (niveaux de zoom) ou les différentes rotations, etc.
Je suis actuellement en train de travailler sur un SVG converter dans le cadre d'une application plus large. Maintenant, mon SVG converter est conçu pour analyser le fichier SVG qu'une seule fois, la conversion de toutes les données de l'SVG fichier XML dans Chemins respectifs, de la Peinture, des Matrices, et ainsi de suite. Tous ces objets vectoriels sont stockés dans ArrayLists. J'ai aussi utiliser un simple jeu d'instructions qui est sauvegardé dans la mémoire de décrire l'ordre dans lequel ils doivent être récupérés retour de la mémoire (mais c'est au-delà de la portée de la présente). Pour attirer tous les graphiques sur la Toile, tout le Chemin, de la Peinture, de la Matrice, etc. les objets sont tirés vers l'arrière de la ArrayLists dans le bon ordre et appliquée sur la Toile. Cela signifie que le long de l'analyse syntaxique du fichier SVG n'arrive qu'une fois; par la suite, tous les graphiques vectoriels peuvent être redessiné rapidement, encore et encore, quel qu'en soit l'échelle ou de la transformation que je souhaite.
Maintenant, SVG et beaucoup de ce que j'ai fait sur il n'y a probablement pas d'importance, mais de mon point de base est que, comme ce que j'ai fait, vous pouvez essayer de stocker tous vos objets de Chemin dans une Liste de quelque sorte. En tant que l'utilisateur touche l'écran et vous générer des Chemins en réponse, ainsi que l'application de ces Chemins d'accès à la Toile, vous pouvez également conserver tous les parcours individuels dans une Liste (par exemple
ArrayList<Path>
). Peut-être les parcours individuels pourraient être sauvées jumelé avec leurs respectifs de la Peinture de l'objet qui décrit la couleur, la largeur du trait, etc. qui a été choisi lorsque le chemin d'accès particulier a été tiré. Chaque fois que l'utilisateur choisit d'effectuer un zoom avant ou arrière (ou de tout autre événement qui nécessite la Toile pour être redessiné), il vous suffit de relire tous les Chemins de la mémoire et de les écrire sur la Toile. Comme la poursuite de la simplification, si l'utilisateur n'est permis qu'une seule Peinture de configuration (par exemple, si l'utilisateur est seulement autorisé à dessiner des lignes blanches, par exemple, plus aucun contrôle sur la largeur), vous pouvez même stocker tous les chemins d'accès de l'utilisateur dessine en un seul Chemin d'accès de l'objet, l'ajout de chaque chemin à l'aide de myPath.addPath(newPath) que chacun est tiré.Compris. J'ai maintenant ajouté plus de ma réponse avec quelques suggestions.
bon, alors le Chemin de l'Objet tient vecteur de données de quelque sorte, c'est une bonne information! Je vais jouer avec vos conseils un peu, merci!
Comment convertir le SVG chemin dans android chemin?
où devons-nous enregistrer à l'utilisateur la saisie tactile en svg, je veux dire, si l'utilisateur touche l'écran, puis comment convertir le toucher des points(x,y) dans les données svg?? et où en sommes-nous stocker des données pour les rendre retour à la toile??
OriginalL'auteur Trevor
Découvrez cette fil. SVG (petites?) pourraient répondre à vos besoins.
OriginalL'auteur ThomasRS