Pourquoi ActualWidth et ActualHeight partir de 0,0?
-
25-09-2019 - |
Question
Je veux ajouter WPF chemin à InkCanvas
et utiliser la sélection pour sélectionner Chemin WPF.
Donc, j'utilise ce code.
System.Windows.Shapes.Path path = drawCanvas.Children[i] as System.Windows.Shapes.Path;
drawCanvas.Children.RemoveAt(i);
inkCanvas.Children.Add(path);
Ceci est la sortie. Je dois choisir WPF Chemin de 0,0 car commencent de 0,0 Actualwidth
et ActualHeight
.
Comment sélectionner le chemin WPF absolu?
Merci
Modifier
Maintenant, je peux le sélectionner absolument en utilisant ce code.
System.Windows.Shapes.Path path = drawCanvas.Children[i] as System.Windows.Shapes.Path;
drawCanvas.Children.RemoveAt(i);
path.Margin = new Thickness(-getMinX(path), -getMinY(path), 0, 0);
containPath.Children.Add(path);
containPath.Width = getMaxX(path) - getMinX(path);
containPath.Height = getMaxY(path) - getMinY(path);
containPath.Margin = new Thickness(getMinX(path), getMinY(path), 0, 0);
inkCanvas.Children.Add(containPath);
La solution
Vous pouvez utiliser le UIElement.UpdateLayout Méthode sur la InkCanvas
mettre à jour le
L'inconvénient de cette approche est que l'utilisateur doit lasso Canvas
qui est un rectangle, pas une forme arbitraire. Néanmoins, il est beaucoup mieux que d'avoir à lasso l'objet et l'origine.
Autres conseils
Pour les éléments qui ne peuvent être définis par l'intermédiaire de points de contrôle (par exemple la ligne, chemin, etc comme contre Rectangle, Ellipse, etc.) lorsque vous l'ajoutez à un contrôle d'éléments (que je suppose que le InkCanvas
est, car il prend en charge la sélection), d'abord une toile Il est ajouté au panneau à 0,0. La largeur et la Height
de la toile sont déterminées à partir des coordonnées X et Y maximale des points de contrôle. Après cela, l'élément est ajouté en tant qu'enfant de cette toile.
Vous verrez aussi que chaque fois que vous voyez ce genre de comportements avec un élément, l'élément de soutien wont Propriétés de mise en page comme horizontal / alignement vertical etc.
La seule façon que je vois autour est de trouver le ActualWidth
et ActualHeight
manuellement à partir des coordonnées dans le chemin.
Edit:. Ceci est une expérience personnelle et non de toute la documentation