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;
}