-1
votes

Comment retourner la path grediométrie verticalement?

J'ai un pathgeométrie que je veux basculer verticalement. J'ai essayé ce qui suit mais cela ne fonctionne pas, je manque quelque chose? XXX


0 commentaires

3 Réponses :


1
votes

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);


4 commentaires

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) 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.



1
votes

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, xxx pré>

vous donnera quelque chose sans largeur. P>

Vous voulez probablement la même largeur et donc: p> xxx pré>

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> xxx pré>

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);
    }


2 commentaires

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 a les mêmes données d'origine geom . 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.



0
votes

@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. XXX


0 commentaires