J'ai une planche d'histoire où je fais un rectangle remonte à une aiguille dans une jauge de voiture MPH. Donc, je le fais aller de 0 à 60 ans et je veux pouvoir obtenir sa valeur actuelle pendant son évolution afin que je puisse utiliser cette valeur pour créer une jauge numérique.
Comment puis-je obtenir la valeur actuelle du début à la fin d'une double animation? J'ai quelque chose comme ceci: p> quand il fait pivoter le rectangle vers le haut, j'ai essayé d'obtenir cet angle mais il vient de retourner zéro. P> p>
4 Réponses :
Vous n'êtes pas sûr de ce qui est exactement le problème auquel vous êtes confronté, mais je viens de vérifier et ce code vous montrera l'angle actuel: Si vous avez besoin d'accéder à une autre classe d'une autre classe, vous pouvez l'exposer via des propriétés telles que: p> public Double CurrentAngle
{
get { return rt.Angle; }
}
Comment puis-je continuer à obtenir la valeur actuelle sans avoir à cliquer sur un bouton? Si j'ajoute que var x = rt.ange; au bas de l'animation, il revient juste zéro.
J'ai des cases à cocher pour simuler des engrenages afin que le code ci-dessus est dans une case à cocher Void private2_Checké (expéditeur d'objet, routéventargs e) Comment puis-je continuer à obtenir sa valeur actuelle car elle revient simplement zéro
@icelated - pas sûr de comprendre. Si vous avez besoin d'une zone de texte continuellement mise à jour avec un nouvel angle, utilisez la liaison comme H.B. montré. Si vous avez besoin d'y accéder à la programmation informatique, il suffit d'accéder à la propriété Angle lorsque vous en avez besoin.
Pour une raison quelconque, il retourne toujours zéro
@ALEX AZA: Je pense que je pense que x = rt.angle code> ferait référence x référence à l'angle. Bien sûr que ce n'est pas le cas et juste après le code de démarrage de l'animation, l'angle est toujours 0 (et X sera toujours 0 après cette assignation)
Exactement HB - Comment puis-je obtenir la valeur actuelle alors? J'ai besoin de le faire dans le code derrière si possible
@iCelated - S'il est privé, vous pouvez l'exposer via une propriété. J'ai montré cela dans ma réponse.
@iCelated: Dans les réponses qui ne sont pas la personne qui vous adressez à votre commentaire doit commencer par @
@icelated, j'ai le même problème ici (Silverlight). l'avez-vous résolu éventuellement?
Vous devez faire quelque chose de mal, considérez cet exemple:
rt.BeginAnimation(RotateTransform.AngleProperty, new DoubleAnimation(0, 60, TimeSpan.FromSeconds(1), FillBehavior.HoldEnd));
Y a-t-il une solution t-on cette valeur dans le code derrière sans reliure? ne sonne pas comme ça
Quel serait le but? Si vous avez un code de code, vous ne pouvez toujours accéder à la valeur actuelle qu'au moment de l'exécution de la pièce de code, que voudriez-vous faire? Bien sûr, vous pouvez créer une propriété dédiée et animer uniquement pour lier la transformation et l'affichage numérique sur cette propriété.
J'espérais juste que je puisse faire des segments comme un écran de 7 segment. Je veux passer d'analogique au numérique
Eh bien, je simulant une jauge de voiture. Il a un rectangle pour une aiguille que je le fais de monte en fonction de l'histoire. Ça marche très bien. Cependant, je souhaite également pouvoir passer au numérique pour afficher le régime de ce type comme dans un 7 segments comme une horloge numérique. J'ai donc besoin d'obtenir la valeur afin que je puisse exécuter un commutateur dessus.
Ensuite, vous devriez avoir une propriété de vitesse dans votre modèle et les affichages doivent représenter cette valeur de différentes manières.
Je l'ai récemment fait avec une horloge analogique et j'ai fait une horloge numérique mais elle était basée sur le temps et était facile à faire les segments.
Je ne sais pas comment faire une propriété de vitesse - alors il n'y a donc aucun moyen de le faire de l'animation alors?
Eh bien, juste quelques propriétés, probablement de type INT que vous pouvez animer (pas nécessairement avec les animations intégrées). Si ce n'est pas une dépendanceProperty, le modèle doit implémenter inotifyPropertychanged < / code> afin que vous puissiez le lier.
Je ne comprends toujours pas bien comment vous allez transformer la vitesse en segments mais vous pouvez faire une liaison avec un ValueConverter pour transformer votre vitesse en autre chose.
Je sais ce que vous dites avec inoticypropertychangned, j'ai fait cela avec le temps. J'ai eu l'heure actuelle et la divisez-la à 2 variables et a utilisé un commutateur pour basculer la visibilité sur les segments. J'espérais faire la même chose avec la valeur actuelle de l'animation.
Je ne peux pas changer la direction que je suis allé avec le storyboard pour alimenter la jauge analogique de la voiture mph, donc je ne peux pas faire de segments pour le numérique alors
Si vous ne pouvez pas changer cela, vous êtes maintenant bloqué avec succès avec une mauvaise conception.
On m'a dit que je pouvais définir un x: nom sur la rotatétransform et obtenir cette valeur directement.
Je suppose que je peux essayer d'avoir l'angle du rectangle en tournant dans le code derrière
Vous pouvez obtenir l'angle de la transformation, au pire dont vous avez besoin de lancer le rendutransform.
Comment puis-je obtenir l'angle de la transformation? rt?
rt.angle code> ou si vous n'avez aucune référence directe (rect.RenderTransform comme rotatétransform) .Angleterre code>.
merci j'ai eu la valeur angulaire. ne sais pas si je peux l'utiliser ou non, mais merci pour tout. Je finirai probablement pas juste juste pour une boîte de texte
Bonsoir. J'ai eu un problème similaire mais avec la position d'un élément lors de l'animation de son mouvement. Je l'ai résolu dans mon cas en utilisant le temps. Cette approche est basée sur la connaissance du temps écoulé après l'animation. Disons que nous avons ce code de classe de l'élément: par exemple, nous devons connaître l'emplacement actuel après un certain temps. Alors commençons. P> var currentLocation = new Point(Location.X + currentShift.X, Location.Y + currentShift.Y);
Si vous avez une nouvelle question, veuillez le demander en cliquant sur le bouton Poser une question . Inclure un lien vers cette question si cela aide à fournir un contexte.
Je n'ai pas écrit au début mais c'est une réponse bien sûr. Merci pour le conseil et désolé pour le gâchis.
Malgré certaines affiches qui affirment ici sinon, j'ai également remarqué qu'il est difficile d'accéder à la valeur actuelle d'une propriété animée alors que l'animation est en cours. Voici une belle solution que j'ai utilisée pour utiliser des animations WPF pour interpoler les valeurs au fil du temps de mon modèle.
var doubleValue = new AnimatedDoubleValue();
var animation=new DoubleAnimation() { From=0, To=100, Duration=TimeSpan.FromSeconds(1) };
animation.SetValue(Storyboard.DesiredFrameRateProperty, 30);
doubleValue.BeginAnimation(AnimatedDoubleValue.ValueProperty, animation, HandoffBehavior.SnapshotAndReplace);
Je ne sais pas pourquoi cela a été voté. Après 3 jours de recherche, c'est un excellent point de départ pour une classe d'animation pour obtenir les valeurs des animations
Ceci est la solution correcte pour attraper la valeur d'animation sur une animation calculée. En utilisant oldvalue code> sa possible pour calculer la fraction / puissance.
Je pense que cela aiderait, si vous avez montré comment vous allez utiliser exactement la valeur angulaire modifiée. H.b. J'ai montré comment lier l'élément UI à l'angle de changement, j'ai montré comment obtenir l'angle à tout moment par programme. Si aucune de ces réponses ne fonctionne pour vous, vous devez ajouter plus de détails à votre question.