J'essaie de faire une application de dessin et j'obtiens des résultats étranges dans mon "mode de sélection". Si je dessine un rectangle et que je le "sélectionne", RenderSize renvoie la taille appropriée, mais si la ligne est sélectionnée, RenderSize renvoie la taille dont la largeur est définie sur Line.X2 et la hauteur sur Line.Y2. Par exemple: Ligne commence à X1 = 50, Y1 = 50, se termine à X2 = 130, Y2 = 90, RenderSize renvoie Taille avec Largeur = 130 et Hauteur = 90. Ma sélection contient des éléments de type UIElement donc je ne sais pas (et ne devrait vraiment pas s'en soucier) quelle forme est sélectionnée afin de rendre mon mode de sélection aussi générique que possible et je voudrais dessiner une boîte englobante pendant que l'utilisateur déplace la forme sélectionnée.WPF - UIElement.RenderSize ne fonctionne pas pour la forme de ligne
Essayé google le problème, mais n'a rien trouvé de pertinent, alors peut-être que vous pourriez m'aider avec lui. Est-ce parce que Rectangle a une position définie par Canvas alors que Line a ses points définis explicitement?
Alors, est-il un moyen de récupérer généralement une bonne taille (ou quelque chose comme elle) de l'UIElement et afficher la boîte de délimitation basée sur elle? Je n'aime pas l'idée de tests spéciaux et de traitements pour Line (ou toute autre forme qui a le même problème) – grapkulec
Y at-il une raison particulière pour laquelle vous n'utilisez pas 0,0 comme X1, Y1? Vous auriez la bonne boîte de délimitation si c'était le cas, et utilisez Canvas.Top/Canvas.Left de la même manière que vous placez vos objets Rectangle. – micahtan
Donc, vous proposez d'utiliser 0,0 comme l'un des points de la ligne et au lieu de modifier les coordonnées de ce point déplacer la ligne par Canvas.SetLeft/Canvas.SetTop methode et deuxième point? En fait, cela pourrait fonctionner, mais :) Il devrait toujours y avoir une façon plus intuitive ou élégante de le faire. – grapkulec