/// <summary> /// DrawRoundedRectangle - /// Draw a rounded rectangle with the provided Brush and/or Pen. /// If both the Brush and Pen are null this call is a no-op. /// </summary> /// <param name="brush"> /// The Brush with which to fill the rectangle. /// This is optional, and can be null, in which case no fill is performed. /// </param> /// <param name="pen"> /// The Pen with which to stroke the rectangle. /// This is optional, and can be null, in which case no stroke is performed. /// </param> /// <param name="rectangle"> The Rect to fill and/or stroke. </param> /// <param name="radiusX"> /// The radius in the X dimension of the rounded corners of this /// rounded Rect. This value will be clamped to the range [0..rectangle.Width/2] /// </param> /// <param name="radiusY"> /// The radius in the Y dimension of the rounded corners of this /// rounded Rect. This value will be clamped to the range [0..rectangle.Height/2]. /// </param> public override void DrawRoundedRectangle( Brush brush, Pen pen, Rect rectangle, Double radiusX, Double radiusY) { if ((brush != null) || Pen.ContributesToBounds(pen)) { // _bounds is always in "world" space // So, we need to transform the geometry to world to bound it Rect geometryBounds = RectangleGeometry.GetBoundsHelper( pen, _transform, // world transform rectangle, radiusX, radiusY, Matrix.Identity, // geometry transform Geometry.StandardFlatteningTolerance, ToleranceType.Absolute ); AddTransformedBounds(ref geometryBounds); } }
/// <summary> /// Returns the axis-aligned bounding rectangle when stroked with a pen, after applying /// the supplied transform (if non-null). /// </summary> internal override Rect GetBoundsInternal(Pen pen, Matrix worldMatrix, double tolerance, ToleranceType type) { Matrix geometryMatrix; Transform.GetTransformValue(Transform, out geometryMatrix); return(RectangleGeometry.GetBoundsHelper( pen, worldMatrix, Rect, RadiusX, RadiusY, geometryMatrix, tolerance, type)); }