Apricot.Balloon.CreateStripeBrush C# (CSharp) Method

CreateStripeBrush() private method

private CreateStripeBrush ( System.Windows.Media.Brush brush, Size size ) : System.Windows.Media.DrawingBrush
brush System.Windows.Media.Brush
size System.Windows.Size
return System.Windows.Media.DrawingBrush
        private DrawingBrush CreateStripeBrush(Brush brush, Size size)
        {
            DrawingGroup drawingGroup = new DrawingGroup();
            GuidelineSet guidelineSet = new GuidelineSet();
            GeometryGroup geometryGroup = new GeometryGroup();
            StreamGeometry streamGeometry1 = new StreamGeometry();
            StreamGeometry streamGeometry2 = new StreamGeometry();

            guidelineSet.GuidelinesX.Add(0);
            guidelineSet.GuidelinesX.Add(size.Width);
            guidelineSet.GuidelinesY.Add(0);
            guidelineSet.GuidelinesY.Add(size.Height);

            drawingGroup.GuidelineSet = guidelineSet;

            streamGeometry1.FillRule = FillRule.Nonzero;

            using (StreamGeometryContext streamGeometryContext = streamGeometry1.Open())
            {
                streamGeometryContext.BeginFigure(new Point(0, 0), true, true);
                streamGeometryContext.LineTo(new Point(size.Width / 2, 0), true, false);
                streamGeometryContext.LineTo(new Point(0, size.Height / 2), true, false);
            }

            streamGeometry2.FillRule = FillRule.Nonzero;

            using (StreamGeometryContext streamGeometryContext = streamGeometry2.Open())
            {
                streamGeometryContext.BeginFigure(new Point(size.Width, 0), true, true);
                streamGeometryContext.LineTo(new Point(size.Width, size.Height / 2), true, false);
                streamGeometryContext.LineTo(new Point(size.Width / 2, size.Height), true, false);
                streamGeometryContext.LineTo(new Point(0, size.Height), true, false);
            }

            geometryGroup.FillRule = FillRule.Nonzero;
            geometryGroup.Children.Add(streamGeometry1);
            geometryGroup.Children.Add(streamGeometry2);

            drawingGroup.Children.Add(new GeometryDrawing(brush, null, geometryGroup));

            PresentationSource presentationSource = PresentationSource.FromVisual(this);

            if (presentationSource != null && presentationSource.CompositionTarget != null && presentationSource.CompositionTarget.TransformToDevice.M11 == 1.0 && presentationSource.CompositionTarget.TransformToDevice.M22 == 1.0)
            {
                RenderOptions.SetEdgeMode(drawingGroup, EdgeMode.Aliased);
            }

            DrawingBrush drawingBrush = new DrawingBrush(drawingGroup);

            drawingBrush.TileMode = TileMode.Tile;
            drawingBrush.ViewportUnits = BrushMappingMode.Absolute;
            drawingBrush.Viewport = new Rect(0, 0, size.Width, size.Height);
            drawingBrush.Stretch = Stretch.None;

            return drawingBrush;
        }