BoundsWithEffects

ShapeBase.BoundsWithEffects property

Obtient l’étendue finale de cet objet de forme après l’application des effets de dessin. La valeur est mesurée en points.

public RectangleF BoundsWithEffects { get; }

Exemples

Montre comment vérifier comment les limites d’une forme sont affectées par les effets de forme.

Document doc = new Document(MyDir + "Shape shadow effect.docx");

Shape[] shapes = doc.GetChildNodes(NodeType.Shape, true).OfType<Shape>().ToArray();

Assert.AreEqual(2, shapes.Length);

// Les deux formes sont identiques en termes de dimensions et de type de forme.
Assert.AreEqual(shapes[0].Width, shapes[1].Width);
Assert.AreEqual(shapes[0].Height, shapes[1].Height);
Assert.AreEqual(shapes[0].ShapeType, shapes[1].ShapeType);

// La première forme n'a aucun effet et la seconde a une ombre et un contour épais.
// Ces effets rendent la taille de la silhouette de la deuxième forme plus grande que celle de la première.
// Même si la taille du rectangle apparaît lorsqu'on clique sur ces formes dans Microsoft Word,
// les limites extérieures visibles de la deuxième forme sont affectées par l'ombre et le contour et sont donc plus grandes.
// Nous pouvons utiliser la méthode "AdjustWithEffects" pour voir la vraie taille de la forme.
Assert.AreEqual(0.0, shapes[0].StrokeWeight);
Assert.AreEqual(20.0, shapes[1].StrokeWeight);
Assert.False(shapes[0].ShadowEnabled);
Assert.True(shapes[1].ShadowEnabled);

Shape shape = shapes[0];

// Crée un objet RectangleF, représentant un rectangle,
// que nous pourrions potentiellement utiliser comme coordonnées et limites d'une forme.
RectangleF rectangleF = new RectangleF(200, 200, 1000, 1000);

// Exécutez cette méthode pour ajuster la taille du rectangle pour tous nos effets de forme.
RectangleF rectangleFOut = shape.AdjustWithEffects(rectangleF);

// Puisque la forme n'a aucun effet de changement de bordure, ses dimensions de bordure ne sont pas affectées.
Assert.AreEqual(200, rectangleFOut.X);
Assert.AreEqual(200, rectangleFOut.Y);
Assert.AreEqual(1000, rectangleFOut.Width);
Assert.AreEqual(1000, rectangleFOut.Height);

// Vérifiez l'étendue finale de la première forme, en points.
Assert.AreEqual(0, shape.BoundsWithEffects.X);
Assert.AreEqual(0, shape.BoundsWithEffects.Y);
Assert.AreEqual(147, shape.BoundsWithEffects.Width);
Assert.AreEqual(147, shape.BoundsWithEffects.Height);

shape = shapes[1];
rectangleF = new RectangleF(200, 200, 1000, 1000);
rectangleFOut = shape.AdjustWithEffects(rectangleF);

// Les effets de forme ont légèrement déplacé le coin supérieur gauche apparent de la forme.
Assert.AreEqual(171.5, rectangleFOut.X);
Assert.AreEqual(167, rectangleFOut.Y);

// Les effets ont également affecté les dimensions visibles de la forme.
Assert.AreEqual(1045, rectangleFOut.Width);
Assert.AreEqual(1132, rectangleFOut.Height);

// Les effets ont également affecté les limites visibles de la forme.
Assert.AreEqual(-28.5, shape.BoundsWithEffects.X);
Assert.AreEqual(-33, shape.BoundsWithEffects.Y);
Assert.AreEqual(192, shape.BoundsWithEffects.Width);
Assert.AreEqual(279, shape.BoundsWithEffects.Height);

Voir également