J'ai un pathgeométrie code> que je veux basculer verticalement. J'ai essayé ce qui suit mais cela ne fonctionne pas, je manque quelque chose?
3 Réponses :
Il suffit de définir la propriété Transform CODE> PATHGEOMETRYRYRYRYRYRY: var myPathGeometry = new PathGeometry();
myPathGeometry.Figures.Add(myPathFigure);
myPathGeometry.Transform = new ScaleTransform(1, -1);
Merci, pour une raison quelconque, je me retrouve avec les mêmes données de figure d'origine!
Désolé, vous allez bien sûr appliquer la transformation à la pathgeométrie d'origine. J'ai édité la réponse.
J'ai déjà appliqué la transformation de la pathgeométrie d'origine, et elle ne retourne pas la forme. Voici ce que j'attends et corrigez-moi s'il vous plaît si je me trompe. Après avoir utilisé scaltransform (1, -1) code> Les nouvelles valeurs Y ne doivent pas être les mêmes d'origine, non ?!
Non, les valeurs restent les mêmes. Juste les changements de rendu.
Un gros problème il y a que votre largeur sera nulle.
Les échelles X et Y sont des facteurs. Comme dans les multiplicateurs. Tout le temps zéro est zéro.
Par conséquent, vous donnera quelque chose sans largeur. P> Vous voulez probablement la même largeur et donc: p> Cela pourrait toujours avoir un autre problème si vous voulez que la chose soit retournée sur son centre, mais au moins il faut apparaître lorsque vous l'utilisez lorsque vous l'utilisez. P> Le calcul de la centrale est peut-être moins que évident. Vous pouvez travailler à la hauteur d'une géométrie à l'aide de ses limites. P> Étant donné que vous créez une nouvelle pathgeométrie, vous souhaitez peut-être conserver l'original sans aucune transformée. P> i Mettez certains code ensemble qui manipule une géométrie à partir de ressources et l'utilise pour ajouter un chemin d'accès à une toile. p> balisage: p> code p> private void MyButton_Click(object sender, RoutedEventArgs e)
{
Geometry geom = this.Resources["Star"] as Geometry;
Geometry flipped = geom.Clone();
var bounds = geom.Bounds;
double halfY = (bounds.Bottom - bounds.Top) / 2.0;
flipped.Transform = new ScaleTransform(1, -1, 0, halfY );
PathGeometry pg = PathGeometry.CreateFromGeometry(flipped);
var path = new System.Windows.Shapes.Path {Data=pg, Fill= System.Windows.Media.Brushes.Red };
this.myCanvas.Children.Add(path);
}
Vous avez raison, je veux conserver l'original sans aucune transformation. Cependant, je sais que cela n'a pas de sens, mais dans mon cas, la forme code> code> a les mêmes données d'origine geom code>. Il n'est pas retourné pour une raison quelconque!
Merci @andy, je savais ce qui était mon erreur. Je vais l'expliquer dans ma réponse.
@andy et @clemens ont donné de bonnes réponses. La raison pour laquelle je n'ai pas eu la forme attendue est parce que je n'ai pas remarqué que la forme est en dehors de la région d'écran. Cependant, j'ai utilisé la solution d'Andy parce que j'ai besoin de garder la forme d'origine. En outre, il m'a notifié de créer de nouvelles limites. La seule chose que j'ai changée dans sa réponse est la valeur des nouvelles limites car avec celle qu'il utilisait, la forme était toujours à l'extérieur de la région d'écran.