Question

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 l'option Ligne est sélectionnée, RenderSize renvoie une taille dont Width est défini sur Line.X2 et Height sur Line.Y2. Par exemple: La ligne commence à X1 = 50, Y1 = 50, se termine à X2 = 130, Y2 = 90, RenderSize renvoie Size with Width = 130 et Height = 90. Ma sélection contient des éléments de type UIElement, donc je ne sais pas ( et quelle que soit la forme choisie, quelle forme est sélectionnée afin de rendre mon mode de sélection aussi générique que possible et j'aimerais dessiner un cadre de sélection pendant que l'utilisateur déplace la forme sélectionnée.

J'ai essayé le problème sur Google, mais je n'ai rien trouvé de pertinent, alors vous pourriez peut-être m'aider. Est-ce parce que Rectangle a une position définie par Canvas alors que Line a ses points définis explicitement?

Était-ce utile?

La solution

La raison pour laquelle vous obtenez 130 x 90 est à cause de la raison que vous avez citée. Un rectangle dans WPF n’a pas de position, c’est juste une hauteur / largeur, donc les deux valeurs de taille sont égales.

Cependant, une ligne définie par des points définit nécessairement un décalage requis par rapport à l'origine. Ce décalage est donc inclus dans le cadre de sélection.

Notez également que vous pouvez continuer à utiliser les propriétés Canvas.Top/Left avec votre objet Line pour le décaler davantage, par exemple:

.
  <Canvas>
    <Line X1="50" X2="130" Y1="50" Y2="90" StrokeThickness="1" Stroke="Blue" Canvas.Top="50" Canvas.Left="30"></Line>
  </Canvas>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top