Example #1
0
        /// <summary>
        /// Normalize a brush
        /// </summary>
        private GraphicBrush TransformBrush(GraphicBrush graphicBrush)
        {
            GraphicBrush retBrush;

            switch (graphicBrush)
            {
            case GraphicLinearGradientBrush linearGradientBrush:
            {
                if (linearGradientBrush.MappingMode == GraphicBrushMappingMode.Absolute)
                {
                    var newlinearGradientBrush = new GraphicLinearGradientBrush();
                    retBrush = newlinearGradientBrush;

                    newlinearGradientBrush.StartPoint    = MatrixUtilities.TransformPoint(linearGradientBrush.StartPoint, transformMatrix);
                    newlinearGradientBrush.EndPoint      = MatrixUtilities.TransformPoint(linearGradientBrush.EndPoint, transformMatrix);
                    newlinearGradientBrush.MappingMode   = linearGradientBrush.MappingMode;
                    newlinearGradientBrush.GradientStops = linearGradientBrush.GradientStops;
                }
                else
                {
                    retBrush = linearGradientBrush;
                }

                break;
            }

            case GraphicRadialGradientBrush radialGradientBrush:
            {
                if (radialGradientBrush.MappingMode == GraphicBrushMappingMode.Absolute)
                {
                    var newlinearGradientBrush = new GraphicRadialGradientBrush();
                    retBrush = newlinearGradientBrush;

                    newlinearGradientBrush.StartPoint = MatrixUtilities.TransformPoint(radialGradientBrush.StartPoint, transformMatrix);
                    newlinearGradientBrush.EndPoint   = MatrixUtilities.TransformPoint(radialGradientBrush.EndPoint, transformMatrix);
                    (newlinearGradientBrush.RadiusX, newlinearGradientBrush.RadiusY) = MatrixUtilities.TransformSize(radialGradientBrush.RadiusX, radialGradientBrush.RadiusY, transformMatrix);
                    newlinearGradientBrush.MappingMode   = radialGradientBrush.MappingMode;
                    newlinearGradientBrush.GradientStops = radialGradientBrush.GradientStops;
                }
                else
                {
                    retBrush = radialGradientBrush;
                }

                break;
            }

            default:
                retBrush = graphicBrush;
                break;
            }

            return(retBrush);
        }