public override object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var width = (double)values[0]; var height = (double)values[1]; var backgroundColor = (Color)values[2]; var background = new LinearGradientBrush() { StartPoint = new Point(0, 1), EndPoint = new Point(0, 0), GradientStops = new GradientStopCollection() { new GradientStop(backgroundColor, 0), new GradientStop(Colors.Transparent, 1), } }; background.Freeze(); var drawingBrush = new DrawingBrush() { Drawing = new DrawingGroup() { Children = new DrawingCollection() { new GeometryDrawing(_stackBrush, null, new RectangleGeometry(new Rect(0, 0, width, height))), new GeometryDrawing(background, null, new RectangleGeometry(new Rect(0, 0, width, height))), } } }; drawingBrush.Freeze(); return(drawingBrush); }
public static DrawingBrush Get(CardViewModel card) { try { if (card?.Id == null || card.Name == null || Cache == null) { return(new DrawingBrush()); } var cardImageObj = new CardImageObject(card); var key = $"{card.Id}_{cardImageObj.GetHashCode()}"; if (!Refresh.Contains(card.Id) && Cache.TryGet(key, out var cached)) { return(cached.Image); } Refresh.Remove(card.Id); DrawingBrush image = null; Application.Current.Dispatcher.Invoke(() => image = ThemeManager.GetBarImageBuilder(card).Build()); if (image.CanFreeze) { image.Freeze(); } cardImageObj = new CardImageObject(image, card); Cache.Cache(key, cardImageObj); return(cardImageObj.Image); } catch (Exception ex) { Log.Error($"Image builder failed: {ex.Message}"); return(new DrawingBrush()); } }
public override Brush GetColorDetailsBrush(HsvColor hsvColor) { GeometryDrawing geomDrawing1 = new GeometryDrawing(); geomDrawing1.Geometry = new RectangleGeometry(new Rect(0, 0, 100, 100)); geomDrawing1.Brush = ColorUtilities.GetHueBrash(1.0, hsvColor.V); ((LinearGradientBrush)geomDrawing1.Brush).EndPoint = new Point(1, 0); GeometryDrawing geomDrawing2 = new GeometryDrawing(); geomDrawing2.Geometry = new RectangleGeometry(new Rect(0, 0, 100, 100)); Color zeroSat = new HsvColor(0.0, 0.0, hsvColor.V).ToRgb(); geomDrawing2.Brush = new LinearGradientBrush(zeroSat, Color.FromScRgb(0, zeroSat.ScR, zeroSat.ScG, zeroSat.ScB), new Point(0.5, 1), new Point(0.5, 0)); DrawingGroup rootDrawingGroup = new DrawingGroup(); rootDrawingGroup.Children.Add(geomDrawing1); rootDrawingGroup.Children.Add(geomDrawing2); DrawingBrush br = new DrawingBrush(rootDrawingGroup); br.Freeze(); return(br); }
public ProfilePreview() { _children = new VisualCollection(this); DrawingGroup checkerGroup = new DrawingGroup(); checkerGroup.Children.Add(new GeometryDrawing(Brushes.White, null, new RectangleGeometry(new Rect(0, 0, 100, 100)))); DrawingGroup grayGroup = new DrawingGroup(); grayGroup.Children.Add(new GeometryDrawing(Brushes.LightGray, null, new RectangleGeometry(new Rect(0, 0, 50, 50)))); grayGroup.Children.Add(new GeometryDrawing(Brushes.LightGray, null, new RectangleGeometry(new Rect(50, 50, 50, 50)))); checkerGroup.Children.Add(grayGroup); checkerGroup.Freeze(); _checkeredBrush = new DrawingBrush(checkerGroup) { Viewport = new Rect(0, 0, 10, 10), ViewportUnits = BrushMappingMode.Absolute, TileMode = TileMode.Tile }; _checkeredBrush.Freeze(); _borderPen = new Pen(Brushes.Black, 1d); Focusable = false; }
/// <summary> /// Creates a 45 degree (Topleft to Bottomright tiled DrawingBrush) /// </summary> /// <param name="Foreground">Linebrush</param> /// <param name="Background">Background</param> /// <param name="Linethickness">Line thickness</param> /// <param name="DistanceLines">Horizontal distance between lines in dibs</param> /// <returns></returns> public static DrawingBrush Hatch45Brush(Brush Foreground, Brush Background, double Linethickness, double DistanceLines) { DrawingGroup gg = new DrawingGroup(); //Background gg.Children.Add(new GeometryDrawing(Background, new Pen(Background, Linethickness), new RectangleGeometry(new Rect(0, 0, DistanceLines, DistanceLines)))); //https://docs.microsoft.com/de-de/dotnet/desktop/wpf/graphics-multimedia/path-markup-syntax //Move 0,10 //Line 0,0 -> 0, 10 -> 10, 0 -> 10, 1 -> 1, 1 -> 1,10 String LineGen = "M 0,0 " + "L " + USd(DistanceLines) + "," + USd(DistanceLines) + " " + "M " + USd(DistanceLines / 2.0) + "," + USd(-(DistanceLines / 2.0)) + " " + "L " + USd(DistanceLines * 1.5) + "," + USd(DistanceLines / 2.0) + " " + "M " + USd(-(DistanceLines / 2.0)) + "," + USd(DistanceLines / 2.0) + " " + "L " + USd(DistanceLines / 2.0) + "," + USd(DistanceLines * 1.5); gg.Children.Add(new GeometryDrawing(Background, new Pen(Foreground, Linethickness), Geometry.Parse(LineGen))); // DrawingBrush result = new DrawingBrush(gg); result.TileMode = TileMode.Tile; result.Viewport = new Rect(0, 0, DistanceLines, DistanceLines); result.ViewportUnits = BrushMappingMode.Absolute; result.Viewbox = new Rect(0, 0, DistanceLines, DistanceLines); result.ViewboxUnits = BrushMappingMode.Absolute; if (result.CanFreeze) { result.Freeze(); } return(result); }
public static Brush CreateCheckerBrush() { // from http://msdn.microsoft.com/en-us/library/aa970904.aspx DrawingBrush checkerBrush = new DrawingBrush(); GeometryDrawing backgroundSquare = new GeometryDrawing( Brushes.White, null, new RectangleGeometry(new Rect(0, 0, 8, 8))); backgroundSquare.Freeze(); GeometryGroup aGeometryGroup = new GeometryGroup(); aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, 4, 4))); aGeometryGroup.Children.Add(new RectangleGeometry(new Rect(4, 4, 4, 4))); GeometryDrawing checkers = new GeometryDrawing(Brushes.Black, null, aGeometryGroup); checkers.Freeze(); DrawingGroup checkersDrawingGroup = new DrawingGroup(); checkersDrawingGroup.Children.Add(backgroundSquare); checkersDrawingGroup.Children.Add(checkers); checkerBrush.Drawing = checkersDrawingGroup; checkerBrush.Viewport = new Rect(0, 0, 0.5, 0.5); checkerBrush.TileMode = TileMode.Tile; checkerBrush.Freeze(); return(checkerBrush); }
internal static Brush MakeCheckerboardBrush(double checkerboardSize) { DrawingGroup drawingGroup = new DrawingGroup(); DrawingContext drawingContext = drawingGroup.Open(); drawingContext.DrawRectangle((Brush)Brushes.White, (Pen)null, new Rect(new Point(0.0, 0.0), new Point(checkerboardSize * 2.0, checkerboardSize * 2.0))); for (int index1 = 0; index1 < 2; ++index1) { for (int index2 = 0; index2 < 2; ++index2) { if ((index1 + index2) % 2 == 1) { Point point1 = new Point(checkerboardSize * (double)index1, checkerboardSize * (double)index2); Point point2 = new Point(checkerboardSize * (double)(index1 + 1), checkerboardSize * (double)(index2 + 1)); drawingContext.DrawRectangle((Brush)Brushes.LightGray, (Pen)null, new Rect(point1, point2)); } } } drawingContext.Close(); DrawingBrush drawingBrush = new DrawingBrush((Drawing)drawingGroup); drawingBrush.ViewportUnits = BrushMappingMode.Absolute; drawingBrush.Viewport = new Rect(0.0, 0.0, checkerboardSize * 2.0, checkerboardSize * 2.0); drawingBrush.Stretch = Stretch.Uniform; drawingBrush.TileMode = TileMode.Tile; drawingBrush.Freeze(); return((Brush)drawingBrush); }
private static DrawingBrush GetStripeBrush(SolidColorBrush solidBrush) { Geometry solidGeometry = new RectangleGeometry(new Rect(0, 0, 5, 5)); Drawing solidDrawing = new GeometryDrawing(solidBrush, null, solidGeometry); Geometry blankGeometry = new RectangleGeometry(new Rect(5, 0, 5, 5)); Drawing blankDrawing = new GeometryDrawing(Brushes.Transparent, null, blankGeometry); DrawingGroup drawing = new DrawingGroup(); drawing.Children.Add(solidDrawing); drawing.Children.Add(blankDrawing); DrawingBrush drawingBrush = new DrawingBrush(drawing); drawingBrush.TileMode = TileMode.Tile; drawingBrush.Stretch = Stretch.None; drawingBrush.ViewportUnits = BrushMappingMode.Absolute; drawingBrush.Viewport = new Rect(0, 0, 4, 2); drawingBrush.Freeze(); return(drawingBrush); }
public override Brush GetColorDetailsBrush(HsvColor hsvColor) { Color hueColor = new HsvColor(hsvColor.H, 1, 1).ToRgb(); GeometryDrawing geomDrawing1 = new GeometryDrawing(); geomDrawing1.Geometry = new RectangleGeometry(new Rect(0, 0, 100, 100)); geomDrawing1.Brush = new LinearGradientBrush(Colors.Black, hueColor, new Point(0.5, 1), new Point(0.5, 0)); GeometryDrawing geomDrawing2 = new GeometryDrawing(); geomDrawing2.Geometry = new RectangleGeometry(new Rect(0, 0, 100, 100)); geomDrawing2.Brush = new LinearGradientBrush(Colors.White, Colors.Black, new Point(0.5, 0), new Point(0.5, 1)); DrawingGroup drawingGroup1 = new DrawingGroup(); drawingGroup1.Children.Add(geomDrawing2); drawingGroup1.OpacityMask = new LinearGradientBrush(Color.FromScRgb(1, 0, 0, 0), Color.FromScRgb(0, 0, 0, 0), new Point(0, 0.5), new Point(1, 0.5)); DrawingGroup rootDrawingGroup = new DrawingGroup(); rootDrawingGroup.Children.Add(geomDrawing1); rootDrawingGroup.Children.Add(drawingGroup1); DrawingBrush br = new DrawingBrush(rootDrawingGroup); br.Freeze(); return(br); }
private static Brush CreateFallbackBrush( ) { var line = Geometry.Parse("M0,0 L16,16 M8,-8 L24,8 M-8,8 L8,24"); var pen = new Pen(Brushes.Crimson, 1); var drawing = new GeometryDrawing(null, pen, line); var brush = new DrawingBrush(drawing) { TileMode = TileMode.Tile }; brush.Viewport = brush.Viewbox = new Rect(0, 0, 16, 16); brush.ViewportUnits = brush.ViewboxUnits = BrushMappingMode.Absolute; brush.Freeze( ); return(brush); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { Brush brush1 = (Brush)null; ColorModel source = value as ColorModel; if (source != null) { ColorModel model = new ColorModel(source); model.ScA = 1f; this.UpdateModelForGradientMin(model); GradientStop gradientStop1 = new GradientStop(model.Color, 0.0); gradientStop1.Freeze(); this.UpdateModelForGradientMax(model); GradientStop gradientStop2 = new GradientStop(model.Color, 1.0); gradientStop2.Freeze(); GradientStopCollection gradientStopCollection = new GradientStopCollection(2); gradientStopCollection.Add(gradientStop1); gradientStopCollection.Add(gradientStop2); gradientStopCollection.Freeze(); LinearGradientBrush linearGradientBrush = new LinearGradientBrush(); linearGradientBrush.StartPoint = new Point(0.0, 0.0); linearGradientBrush.EndPoint = new Point(1.0, 0.0); linearGradientBrush.GradientStops = gradientStopCollection; linearGradientBrush.Freeze(); brush1 = (Brush)linearGradientBrush; Brush brush2 = parameter as Brush; if (brush2 != null) { brush2.Freeze(); RectangleGeometry rectangleGeometry = new RectangleGeometry(new Rect(0.0, 0.0, 100.0, 10.0)); rectangleGeometry.Freeze(); GeometryDrawing geometryDrawing1 = new GeometryDrawing(brush2, (Pen)null, (Geometry)rectangleGeometry); brush2.Freeze(); GeometryDrawing geometryDrawing2 = new GeometryDrawing(brush1, (Pen)null, (Geometry)rectangleGeometry); geometryDrawing2.Freeze(); DrawingGroup drawingGroup = new DrawingGroup(); drawingGroup.Children.Add((Drawing)geometryDrawing1); drawingGroup.Children.Add((Drawing)geometryDrawing2); drawingGroup.Freeze(); DrawingBrush drawingBrush = new DrawingBrush((Drawing)drawingGroup); drawingBrush.Freeze(); brush1 = (Brush)drawingBrush; } } return((object)brush1); }
// Token: 0x060077B7 RID: 30647 RVA: 0x002228D0 File Offset: 0x00220AD0 internal InkCanvasSelectionAdorner(UIElement adornedElement) : base(adornedElement) { this._adornerBorderPen = new Pen(Brushes.Black, 1.0); DoubleCollection doubleCollection = new DoubleCollection(); doubleCollection.Add(4.5); doubleCollection.Add(4.5); this._adornerBorderPen.DashStyle = new DashStyle(doubleCollection, 2.25); this._adornerBorderPen.DashCap = PenLineCap.Flat; this._adornerBorderPen.Freeze(); this._adornerPenBrush = new Pen(new SolidColorBrush(Color.FromRgb(132, 146, 222)), 1.0); this._adornerPenBrush.Freeze(); this._adornerFillBrush = new LinearGradientBrush(Color.FromRgb(240, 242, byte.MaxValue), Color.FromRgb(180, 207, 248), 45.0); this._adornerFillBrush.Freeze(); DrawingGroup drawingGroup = new DrawingGroup(); DrawingContext drawingContext = null; try { drawingContext = drawingGroup.Open(); drawingContext.DrawRectangle(Brushes.Transparent, null, new Rect(0.0, 0.0, 1.0, 1.0)); drawingContext.DrawLine(new Pen(Brushes.Black, 0.16) { StartLineCap = PenLineCap.Square, EndLineCap = PenLineCap.Square }, new Point(1.0, 0.0), new Point(0.0, 1.0)); } finally { if (drawingContext != null) { drawingContext.Close(); } } drawingGroup.Freeze(); DrawingBrush drawingBrush = new DrawingBrush(drawingGroup); drawingBrush.TileMode = TileMode.Tile; drawingBrush.Viewport = new Rect(0.0, 0.0, 6.0, 6.0); drawingBrush.ViewportUnits = BrushMappingMode.Absolute; drawingBrush.Freeze(); this._hatchPen = new Pen(drawingBrush, 6.0); this._hatchPen.Freeze(); this._elementsBounds = new List <Rect>(); this._strokesBounds = Rect.Empty; }
private async void VisualExtentValuesChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == string.Empty || e.PropertyName == nameof(Extent.ZoomLevel)) { PanelExtent = new Rect(Projection.FullMapSizeFor(Extent.ZoomLevel)); // Measurements only change when the zoom level changes. Screen size affects the visual port, // and GeoArea affects the geographic area under the map InvalidateMeasure(); } ScrollOwner?.InvalidateScrollInfo(); InvalidateArrange(); foreach (var child in InternalChildren.OfType <UIElement>().Where(c => !(c is MapLayer)).ToList()) { Children.Remove(child); } var tiles = tileManager.GetTilesForArea(Projection, Extent).ToList(); while (tiles.Any()) { await Task.WhenAny(tiles); foreach (var finishedDrawing in tiles.Where(t => t.IsCompleted).ToList()) { var tileContent = await finishedDrawing; var visual = new Rectangle(); Geo.SetArea(visual, Geo.GetArea(tileContent)); var brush = new DrawingBrush { Drawing = tileContent, Stretch = Stretch.Fill }; brush.Freeze(); visual.Fill = brush; SetZIndex(visual, int.MaxValue); Children.Add(visual); tiles.Remove(finishedDrawing); } } }
public static DrawingBrush CreateDrawingBrushFromStream(Stream stream, string resourceName) { try { BitmapImage bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = stream; bitmapImage.EndInit(); DrawingBrush drawingBrush = new DrawingBrush((Drawing) new ImageDrawing((ImageSource)bitmapImage, new Rect(new Size(bitmapImage.Width, bitmapImage.Height)))); AutomationElement.SetId((DependencyObject)drawingBrush, resourceName); drawingBrush.Freeze(); return(drawingBrush); } catch (Exception ex) { } return((DrawingBrush)null); }
DrawingBrush CreateDrawingBrush(Brush brush) { DrawingBrush db = new DrawingBrush() { TileMode = TileMode.Tile, ViewboxUnits = BrushMappingMode.Absolute, ViewportUnits = BrushMappingMode.Absolute, }; if (IsHorizontal) { db.Viewbox = new Rect(0, 0, 4, 5); db.Viewport = new Rect(0, 0, 4, 5); db.Drawing = new GeometryDrawing { Brush = brush, Geometry = new GeometryGroup { Children = { new RectangleGeometry(new Rect(0, 0, 1, 1)), new RectangleGeometry(new Rect(0, 4, 1, 1)), new RectangleGeometry(new Rect(2, 2, 1, 1)) } } }; } else { db.Viewbox = new Rect(0, 0, 5, 4); db.Viewport = new Rect(0, 0, 5, 4); db.Drawing = new GeometryDrawing { Brush = brush, Geometry = new GeometryGroup { Children = { new RectangleGeometry(new Rect(0, 0, 1, 1)), new RectangleGeometry(new Rect(4, 0, 1, 1)), new RectangleGeometry(new Rect(2, 2, 1, 1)) } } }; } db.Freeze(); return(db); }
public override object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var width = (double)values[0]; var height = (double)values[1]; var backgroundColor = values[2] as Color?; var borderBrush = values[3] as Brush; if (backgroundColor == null) { var nullBrush = new DrawingBrush() { Drawing = new DrawingGroup() { Children = new DrawingCollection() { new GeometryDrawing(null, new Pen(borderBrush, 1.5), new LineGeometry(new Point(0, 0), new Point(width, height))), new GeometryDrawing(null, new Pen(borderBrush, 1.5), new LineGeometry(new Point(0, height), new Point(width, 0))), } } }; nullBrush.Freeze(); return(nullBrush); } var background = new SolidColorBrush((Color)backgroundColor); background.Freeze(); var drawingBrush = new DrawingBrush() { Drawing = new DrawingGroup() { Children = new DrawingCollection() { new GeometryDrawing(_stackBrush, null, new RectangleGeometry(new Rect(1, 1, Math.Max(0, width - 2), Math.Max(0, height - 2)))), new GeometryDrawing(background, null, new RectangleGeometry(new Rect(0, 0, width, height))), } } }; drawingBrush.Freeze(); return(drawingBrush); }
private DrawingBrush CreateBrush() { var half = BlockSize / 2; var brush = new DrawingBrush(); brush.Stretch = Stretch.None; brush.TileMode = TileMode.Tile; brush.ViewportUnits = BrushMappingMode.Absolute; brush.Viewport = new Rect(0, 0, BlockSize, BlockSize); var drawingGroup = new DrawingGroup(); drawingGroup.Children.Add(new GeometryDrawing(Background, null, new RectangleGeometry(new Rect(0, 0, BlockSize, BlockSize)))); var geometryGroup = new GeometryGroup(); geometryGroup.Children.Add(new RectangleGeometry(new Rect(0, 0, half, half))); geometryGroup.Children.Add(new RectangleGeometry(new Rect(half, half, half, half))); drawingGroup.Children.Add(new GeometryDrawing(Foreground, null, geometryGroup)); brush.Drawing = drawingGroup; brush.Freeze(); return(brush); }
/// <summary> /// Recreates the window mask. /// </summary> private void RecreateWindowMask() { Rect windowRect = GetWindowShape(); double width = windowRect.Width; double height = windowRect.Height; double left = windowRect.X; double top = windowRect.Y; // Add top left and bottom right marker so the final image will have the size of the screen. Rect[] rects = new Rect[] { new Rect(0, 0, 1, 1), new Rect(maxScreenWidth - 1, maxScreenHeight - 1, 1, 1), new Rect(left, top, 20, 60), new Rect(left + width - 20, top, 20, 60), new Rect(left, top + height - 60, 20, 60), new Rect(left + width - 20, top + height - 60, 20, 60), new Rect(left + 20, top, Math.Max(0, width - 40), height), new Rect(left, top + 60, width, Math.Max(0, height - 120)), }; var drawings = new DrawingGroup(); for (var i = 0; i < rects.Length; i++) { ImageDrawing drawing = new ImageDrawing(); drawing.Rect = rects[i]; drawing.ImageSource = windowImages[i]; drawings.Children.Add(drawing); } var windowImage = new DrawingImage(drawings); // Improve performance by freezing. windowImage.Freeze(); var maskDrawing = new ImageDrawing(windowImage, new Rect(-(maxScreenWidth - width) / 2, -(maxScreenHeight - height) / 2, maxScreenWidth, maxScreenHeight)); maskDrawing.Freeze(); windowMaskBrush = new DrawingBrush(maskDrawing); windowMaskBrush.Freeze(); }
internal static Brush GetBrush(IconKind iconKind) { if (Brushes.ContainsKey(iconKind)) { return(Brushes[iconKind]); } Drawing drawing = null; if (Instance.Contains(iconKind)) { drawing = Instance[iconKind] as Drawing; } else { drawing = GetDrawing(iconKind); } var brush = new DrawingBrush(drawing); brush.Freeze(); Brushes.Add(iconKind, brush); return(brush); }
private static DrawingBrush CreateDefaultDrawingBrush() { DrawingBrush drawingBrush = new DrawingBrush((System.Windows.Media.Drawing) new DrawingGroup() { Children = { (System.Windows.Media.Drawing) new GeometryDrawing() { Brush = (Brush)Brushes.LightGray, Geometry = (System.Windows.Media.Geometry) new RectangleGeometry(new Rect(0.0, 0.0, 20.0, 20.0)) }, (System.Windows.Media.Drawing) new GeometryDrawing() { Brush = (Brush)Brushes.Black, Geometry = (System.Windows.Media.Geometry) new EllipseGeometry(new Point(0.0, 0.0), 10.0, 10.0) }, (System.Windows.Media.Drawing) new GeometryDrawing() { Brush = (Brush)Brushes.Black, Geometry = (System.Windows.Media.Geometry) new EllipseGeometry(new Point(20.0, 20.0), 10.0, 10.0) }, (System.Windows.Media.Drawing) new GeometryDrawing() { Brush = (Brush)Brushes.White, Geometry = (System.Windows.Media.Geometry) new EllipseGeometry(new Point(20.0, 0.0), 10.0, 10.0) }, (System.Windows.Media.Drawing) new GeometryDrawing() { Brush = (Brush)Brushes.White, Geometry = (System.Windows.Media.Geometry) new EllipseGeometry(new Point(0.0, 20.0), 10.0, 10.0) } } }); drawingBrush.Viewbox = new Rect(0.0, 0.0, 20.0, 20.0); drawingBrush.ViewboxUnits = BrushMappingMode.Absolute; drawingBrush.Freeze(); return(drawingBrush); }
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var backgroundColor = (Color)value; var background = new SolidColorBrush(backgroundColor); background.Freeze(); var drawingBrush = new DrawingBrush() { Drawing = new DrawingGroup() { Children = new DrawingCollection() { new GeometryDrawing(background, null, new RectangleGeometry(new System.Windows.Rect(0, 0, 1, 1))), new GeometryDrawing(_firstStackBrush, null, new RectangleGeometry(new System.Windows.Rect(0, 0, 1, 1))), new GeometryDrawing(_secondStackBrush, null, new RectangleGeometry(new System.Windows.Rect(0, 0, 1, 1))), } } }; drawingBrush.Freeze(); return(drawingBrush); }
private static Brush CreateBrush(FrameworkElement frameworkElement) { var size = (Size)frameworkElement.GetValue(GridSizeProperty); var pen = new Pen(Brushes.DarkGray, 0.1); var blackBrush = new DrawingBrush(); var rectangleGeometry = new RectangleGeometry(new Rect(size)); pen.Freeze(); var geometryDrawing = new GeometryDrawing(null, pen, rectangleGeometry); blackBrush.Drawing = geometryDrawing; geometryDrawing.Freeze(); // Set Viewport and TileMode blackBrush.Viewport = new Rect(size); blackBrush.ViewportUnits = BrushMappingMode.Absolute; blackBrush.TileMode = TileMode.Tile; blackBrush.Freeze(); return(blackBrush); }
/// <summary> /// Returns a square tiled DrawingBrush /// Does not work nicely with < 1 Linethickness atm /// </summary> /// <param name="Foreground">Line brush</param> /// <param name="Background">Background brush</param> /// <param name="Linethickness">Line Thickness</param> /// <returns></returns> public static DrawingBrush HatchRectBrush(Brush Foreground, Brush Background, double Linethickness) { DrawingGroup gg = new DrawingGroup(); //Background gg.Children.Add(new GeometryDrawing(Background, new Pen(Foreground, Linethickness), new RectangleGeometry(new Rect(0, 0, 10, 10)))); //https://docs.microsoft.com/de-de/dotnet/desktop/wpf/graphics-multimedia/path-markup-syntax //Move 0,10 //Line 0,0 -> 0, 10 -> 10, 0 -> 10, 1 -> 1, 1 -> 1,10 //gg.Children.Add(new GeometryDrawing(Background, new Pen(Foreground, Linethickness), Geometry.Parse("M0, 10 L 0, 0 10, 0 10, 1 1, 1 1, 10"))); DrawingBrush result = new DrawingBrush(gg); result.TileMode = TileMode.Tile; result.Viewport = new Rect(0, 0, 10, 10); result.ViewportUnits = BrushMappingMode.Absolute; if (result.CanFreeze) { result.Freeze(); } return(result); }
public static DrawingBrush GetDrawingForIcon(Octicon icon, Brush colorBrush, string theme = null) { string name = icon.ToString(); if (theme != null) { name += "_" + theme; } if (drawingBrushes.ContainsKey(name)) { return(drawingBrushes[name]); } var geometry = OcticonPath.GetGeometryForIcon(icon); geometry.Freeze(); var drawing = new GeometryDrawing() { Brush = colorBrush, Geometry = geometry }; drawing.Freeze(); var brush = new DrawingBrush() { Drawing = drawing, Stretch = Stretch.Uniform }; brush.Freeze(); drawingBrushes.Add(name, brush); return(brush); }
/// <summary> /// Constructor /// </summary> /// <param name="adornedElement">The adorned InkCanvas</param> internal InkCanvasSelectionAdorner(UIElement adornedElement) : base(adornedElement) { Debug.Assert(adornedElement is InkCanvasInnerCanvas, "InkCanvasSelectionAdorner only should be used by InkCanvas internally"); // Initialize the internal data. _adornerBorderPen = new Pen(Brushes.Black, 1.0); DoubleCollection dashes = new DoubleCollection(); dashes.Add(4.5); dashes.Add(4.5); _adornerBorderPen.DashStyle = new DashStyle(dashes, 2.25); _adornerBorderPen.DashCap = PenLineCap.Flat; _adornerBorderPen.Freeze(); _adornerPenBrush = new Pen(new SolidColorBrush(Color.FromRgb(132, 146, 222)), 1); _adornerPenBrush.Freeze(); _adornerFillBrush = new LinearGradientBrush(Color.FromRgb(240, 242, 255), //start color Color.FromRgb(180, 207, 248), //end color 45f //angle ); _adornerFillBrush.Freeze(); // Create a hatch pen DrawingGroup hatchDG = new DrawingGroup(); DrawingContext dc = null; try { dc = hatchDG.Open(); dc.DrawRectangle( Brushes.Transparent, null, new Rect(0.0, 0.0, 1f, 1f)); Pen squareCapPen = new Pen(Brushes.Black, LineThickness); squareCapPen.StartLineCap = PenLineCap.Square; squareCapPen.EndLineCap = PenLineCap.Square; dc.DrawLine(squareCapPen, new Point(1f, 0f), new Point(0f, 1f)); } finally { if (dc != null) { dc.Close(); } } hatchDG.Freeze(); DrawingBrush tileBrush = new DrawingBrush(hatchDG); tileBrush.TileMode = TileMode.Tile; tileBrush.Viewport = new Rect(0, 0, HatchBorderMargin, HatchBorderMargin); tileBrush.ViewportUnits = BrushMappingMode.Absolute; tileBrush.Freeze(); _hatchPen = new Pen(tileBrush, HatchBorderMargin); _hatchPen.Freeze(); _elementsBounds = new List <Rect>(); _strokesBounds = Rect.Empty; }
public void BeachBallSphere() { //Title = "Beachball Sphere"; // Create Viewport3D as content of window. Viewport3D viewport = new Viewport3D(); Content = viewport; // Get the MeshGeometry3D from the GenerateSphere method. MeshGeometry3D mesh = GenerateSphere(new Point3D(0, 0, 0), 1, 36, 18); mesh.Freeze(); // Define a brush for the sphere. Brush[] brushes = new Brush[6] { Brushes.Red, Brushes.Blue, Brushes.Yellow, Brushes.Orange, Brushes.Green, Brushes.White }; DrawingGroup drawgrp = new DrawingGroup(); for (int i = 0; i < brushes.Length; i++) { RectangleGeometry rectgeo = new RectangleGeometry(new Rect(10 * i, 0, 10, 60)); GeometryDrawing geodraw = new GeometryDrawing(brushes[i], null, rectgeo); drawgrp.Children.Add(geodraw); } DrawingBrush drawbrsh = new DrawingBrush(drawgrp); drawbrsh.Freeze(); // Define the GeometryModel3D. GeometryModel3D geomod = new GeometryModel3D(); geomod.Geometry = mesh; geomod.Material = new DiffuseMaterial(drawbrsh); // Create a ModelVisual3D for the GeometryModel3D. ModelVisual3D modvis = new ModelVisual3D(); modvis.Content = geomod; viewport.Children.Add(modvis); // Create another ModelVisual3D for light. Model3DGroup modgrp = new Model3DGroup(); modgrp.Children.Add(new AmbientLight(Color.FromRgb(128, 128, 128))); modgrp.Children.Add( new DirectionalLight(Color.FromRgb(128, 128, 128), new Vector3D(2, -3, -1))); modvis = new ModelVisual3D(); modvis.Content = modgrp; viewport.Children.Add(modvis); // Create the camera. PerspectiveCamera cam = new PerspectiveCamera(new Point3D(0, 0, 8), new Vector3D(0, 0, -1), new Vector3D(0, 1, 0), 45); viewport.Camera = cam; // Create a transform for the GeometryModel3D. AxisAngleRotation3D axisangle = new AxisAngleRotation3D(new Vector3D(1, 1, 0), 0); RotateTransform3D rotate = new RotateTransform3D(axisangle); geomod.Transform = rotate; // Animate the RotateTransform3D. DoubleAnimation anima = new DoubleAnimation(360, new Duration(TimeSpan.FromSeconds(5))); anima.RepeatBehavior = RepeatBehavior.Forever; axisangle.BeginAnimation(AxisAngleRotation3D.AngleProperty, anima); }
public BitmapEffectExample() { // // Create a DrawingGroup // that has no BitmapEffect // PathFigure pLineFigure = new PathFigure(); pLineFigure.StartPoint = new Point(25, 25); PolyLineSegment pLineSegment = new PolyLineSegment(); pLineSegment.Points.Add(new Point(0, 50)); pLineSegment.Points.Add(new Point(25, 75)); pLineSegment.Points.Add(new Point(50, 50)); pLineSegment.Points.Add(new Point(25, 25)); pLineSegment.Points.Add(new Point(25, 0)); pLineFigure.Segments.Add(pLineSegment); PathGeometry pGeometry = new PathGeometry(); pGeometry.Figures.Add(pLineFigure); GeometryDrawing drawing1 = new GeometryDrawing( Brushes.Lime, new Pen(Brushes.Black, 10), pGeometry ); GeometryDrawing drawing2 = new GeometryDrawing( Brushes.Lime, new Pen(Brushes.Black, 2), new EllipseGeometry(new Point(10, 10), 5, 5) ); // Create a DrawingGroup DrawingGroup drawingGroupWithoutBitmapEffect = new DrawingGroup(); drawingGroupWithoutBitmapEffect.Children.Add(drawing1); drawingGroupWithoutBitmapEffect.Children.Add(drawing2); // Use an Image control and a DrawingImage to // display the drawing. DrawingImage drawingImage01 = new DrawingImage(drawingGroupWithoutBitmapEffect); // Freeze the DrawingImage for performance benefits. drawingImage01.Freeze(); Image image01 = new Image(); image01.Source = drawingImage01; image01.Stretch = Stretch.None; image01.HorizontalAlignment = HorizontalAlignment.Left; // // Create another DrawingGroup and apply // a blur effect to it. // // Create a clone of the first DrawingGroup. DrawingGroup drawingGroupWithBitmapEffect = drawingGroupWithoutBitmapEffect.Clone(); // Create a blur effect. BlurBitmapEffect blurEffect = new BlurBitmapEffect(); blurEffect.Radius = 3.0; // Apply it to the drawing group. drawingGroupWithBitmapEffect.BitmapEffect = blurEffect; // Use another Image control and DrawingImage // to display the drawing. DrawingImage drawingImage02 = new DrawingImage(drawingGroupWithBitmapEffect); // Freeze the DrawingImage for performance benefits. drawingImage02.Freeze(); Image image02 = new Image(); image02.Source = drawingImage02; image02.Stretch = Stretch.None; image02.HorizontalAlignment = HorizontalAlignment.Left; // Create borders around the images and add them to the // page. Border border01 = new Border(); border01.BorderBrush = Brushes.Gray; border01.BorderThickness = new Thickness(1); border01.VerticalAlignment = VerticalAlignment.Top; border01.Margin = new Thickness(10); border01.Child = image01; Border border02 = new Border(); border02.BorderBrush = Brushes.Gray; border02.BorderThickness = new Thickness(1); border02.VerticalAlignment = VerticalAlignment.Top; border02.Margin = new Thickness(50, 10, 10, 10); border02.Child = image02; StackPanel mainPanel = new StackPanel(); mainPanel.Orientation = Orientation.Horizontal; mainPanel.HorizontalAlignment = HorizontalAlignment.Left; mainPanel.VerticalAlignment = VerticalAlignment.Top; mainPanel.Children.Add(border01); mainPanel.Children.Add(border02); // // Use a DrawingBrush to create a checkered background for the page. // GeometryDrawing backgroundSquareDrawing = new GeometryDrawing( Brushes.White, null, new RectangleGeometry(new Rect(0, 0, 1, 1))); GeometryGroup twoRectangles = new GeometryGroup(); twoRectangles.Children.Add(new RectangleGeometry(new Rect(0, 0, 0.5, 0.5))); twoRectangles.Children.Add(new RectangleGeometry(new Rect(0.5, 0.5, 0.5, 0.5))); SolidColorBrush squaresBrush = new SolidColorBrush(Color.FromArgb(102, 204, 204, 204)); squaresBrush.Opacity = 0.4; GeometryDrawing checkerDrawing = new GeometryDrawing( squaresBrush, null, twoRectangles); DrawingGroup checkerDrawings = new DrawingGroup(); checkerDrawings.Children.Add(backgroundSquareDrawing); checkerDrawings.Children.Add(checkerDrawing); DrawingBrush checkerBrush = new DrawingBrush(checkerDrawings); checkerBrush.Viewport = new Rect(0, 0, 10, 10); checkerBrush.ViewportUnits = BrushMappingMode.Absolute; checkerBrush.TileMode = TileMode.Tile; checkerBrush.Freeze(); this.Background = checkerBrush; this.Content = mainPanel; }
public DrawingBrushExample() { // // Create the Geometry to draw. // GeometryGroup ellipses = new GeometryGroup(); ellipses.Children.Add( new EllipseGeometry(new Point(50, 50), 45, 20) ); ellipses.Children.Add( new EllipseGeometry(new Point(50, 50), 20, 45) ); // // Create a GeometryDrawing. // GeometryDrawing aGeometryDrawing = new GeometryDrawing(); aGeometryDrawing.Geometry = ellipses; // Paint the drawing with a gradient. aGeometryDrawing.Brush = new LinearGradientBrush( Colors.Blue, Color.FromRgb(204, 204, 255), new Point(0, 0), new Point(1, 1)); // Outline the drawing with a solid color. aGeometryDrawing.Pen = new Pen(Brushes.Black, 10); DrawingBrush patternBrush = new DrawingBrush(aGeometryDrawing); patternBrush.Viewport = new Rect(0, 0, 0.25, 0.25); patternBrush.TileMode = TileMode.Tile; patternBrush.Freeze(); // // Create an object to paint. // Rectangle paintedRectangle = new Rectangle(); paintedRectangle.Width = 100; paintedRectangle.Height = 100; paintedRectangle.Fill = patternBrush; // // Place the image inside a border and // add it to the page. // Border exampleBorder = new Border(); exampleBorder.Child = paintedRectangle; exampleBorder.BorderBrush = Brushes.Gray; exampleBorder.BorderThickness = new Thickness(1); exampleBorder.HorizontalAlignment = HorizontalAlignment.Left; exampleBorder.VerticalAlignment = VerticalAlignment.Top; exampleBorder.Margin = new Thickness(10); this.Margin = new Thickness(20); this.Background = Brushes.White; this.Content = exampleBorder; }
public DrawingGroupGuidelineSetExample() { // // Create a DrawingGroup // that has no guideline set // GeometryDrawing drawing1 = new GeometryDrawing( Brushes.Black, null, new RectangleGeometry(new Rect(0, 20, 30, 80)) ); GeometryGroup whiteRectangles = new GeometryGroup(); whiteRectangles.Children.Add(new RectangleGeometry(new Rect(5.5, 25, 20, 20))); whiteRectangles.Children.Add(new RectangleGeometry(new Rect(5.5, 50, 20, 20))); whiteRectangles.Children.Add(new RectangleGeometry(new Rect(5.5, 75, 20, 20))); GeometryDrawing drawing2 = new GeometryDrawing( Brushes.White, null, whiteRectangles ); // Create a DrawingGroup DrawingGroup drawingGroupWithoutGuidelines = new DrawingGroup(); drawingGroupWithoutGuidelines.Children.Add(drawing1); drawingGroupWithoutGuidelines.Children.Add(drawing2); // Use an Image control and a DrawingImage to // display the drawing. DrawingImage drawingImage01 = new DrawingImage(drawingGroupWithoutGuidelines); // Freeze the DrawingImage for performance benefits. drawingImage01.Freeze(); Image image01 = new Image(); image01.Source = drawingImage01; image01.Stretch = Stretch.None; image01.HorizontalAlignment = HorizontalAlignment.Left; image01.Margin = new Thickness(10); // // Create another DrawingGroup and apply // a blur effect to it. // // Create a clone of the first DrawingGroup. DrawingGroup drawingGroupWithGuidelines = drawingGroupWithoutGuidelines.Clone(); // Create a guideline set. GuidelineSet guidelines = new GuidelineSet(); guidelines.GuidelinesX.Add(5.5); guidelines.GuidelinesX.Add(25.5); guidelines.GuidelinesY.Add(25); guidelines.GuidelinesY.Add(50); guidelines.GuidelinesY.Add(75); // Apply it to the drawing group. drawingGroupWithGuidelines.GuidelineSet = guidelines; // Use another Image control and DrawingImage // to display the drawing. DrawingImage drawingImage02 = new DrawingImage(drawingGroupWithGuidelines); // Freeze the DrawingImage for performance benefits. drawingImage02.Freeze(); Image image02 = new Image(); image02.Source = drawingImage02; image02.Stretch = Stretch.None; image02.HorizontalAlignment = HorizontalAlignment.Left; image02.Margin = new Thickness(50, 10, 10, 10); StackPanel mainPanel = new StackPanel(); mainPanel.Orientation = Orientation.Horizontal; mainPanel.HorizontalAlignment = HorizontalAlignment.Left; mainPanel.Margin = new Thickness(20); mainPanel.Children.Add(image01); mainPanel.Children.Add(image02); // // Use a DrawingBrush to create a grid background. // GeometryDrawing backgroundRectangleDrawing = new GeometryDrawing( Brushes.White, null, new RectangleGeometry(new Rect(0, 0, 1, 1)) ); PolyLineSegment backgroundLine1 = new PolyLineSegment(); backgroundLine1.Points.Add(new Point(1, 0)); backgroundLine1.Points.Add(new Point(1, 0.1)); backgroundLine1.Points.Add(new Point(0, 0.1)); PathFigure line1Figure = new PathFigure(); line1Figure.Segments.Add(backgroundLine1); PathGeometry backgroundLine1Geometry = new PathGeometry(); backgroundLine1Geometry.Figures.Add(line1Figure); GeometryDrawing backgroundLineDrawing1 = new GeometryDrawing( new SolidColorBrush(Color.FromArgb(255, 204, 204, 255)), null, backgroundLine1Geometry ); PolyLineSegment backgroundLine2 = new PolyLineSegment(); backgroundLine2.Points.Add(new Point(0, 1)); backgroundLine2.Points.Add(new Point(0.1, 1)); backgroundLine2.Points.Add(new Point(0.1, 0)); PathFigure line2Figure = new PathFigure(); line2Figure.Segments.Add(backgroundLine2); PathGeometry backgroundLine2Geometry = new PathGeometry(); backgroundLine2Geometry.Figures.Add(line2Figure); GeometryDrawing backgroundLineDrawing2 = new GeometryDrawing( new SolidColorBrush(Color.FromArgb(255, 204, 204, 255)), null, backgroundLine2Geometry ); DrawingGroup backgroundGroup = new DrawingGroup(); backgroundGroup.Children.Add(backgroundRectangleDrawing); backgroundGroup.Children.Add(backgroundLineDrawing1); backgroundGroup.Children.Add(backgroundLineDrawing2); DrawingBrush gridPatternBrush = new DrawingBrush(backgroundGroup); gridPatternBrush.Viewport = new Rect(0, 0, 10, 10); gridPatternBrush.ViewportUnits = BrushMappingMode.Absolute; gridPatternBrush.TileMode = TileMode.Tile; gridPatternBrush.Freeze(); Border mainBorder = new Border(); mainBorder.Background = gridPatternBrush; mainBorder.BorderThickness = new Thickness(1); mainBorder.BorderBrush = Brushes.Gray; mainBorder.HorizontalAlignment = HorizontalAlignment.Left; mainBorder.VerticalAlignment = VerticalAlignment.Top; mainBorder.Margin = new Thickness(20); mainBorder.Child = mainPanel; // // Add the items to the page. // this.Content = mainBorder; this.Background = Brushes.White; }
public ImageDrawingWithDrawingBrushExample() { // Create a DrawingGroup to combine the ImageDrawing objects. DrawingGroup imageDrawings = new DrawingGroup(); // Create a 100 by 100 image with an upper-left point of (75,75). ImageDrawing bigKiwi = new ImageDrawing(); bigKiwi.Rect = new Rect(75, 75, 100, 100); bigKiwi.ImageSource = new BitmapImage( new Uri(@"sampleImages\kiwi.png", UriKind.Relative)); imageDrawings.Children.Add(bigKiwi); // Create a 25 by 25 image with an upper-left point of (0,150). ImageDrawing smallKiwi1 = new ImageDrawing(); smallKiwi1.Rect = new Rect(0, 150, 25, 25); smallKiwi1.ImageSource = new BitmapImage(new Uri(@"sampleImages\kiwi.png", UriKind.Relative)); imageDrawings.Children.Add(smallKiwi1); // Create a 25 by 25 image with an upper-left point of (150,0). ImageDrawing smallKiwi2 = new ImageDrawing(); smallKiwi2.Rect = new Rect(150, 0, 25, 25); smallKiwi2.ImageSource = new BitmapImage(new Uri(@"sampleImages\kiwi.png", UriKind.Relative)); imageDrawings.Children.Add(smallKiwi2); // Create a 75 by 75 image with an upper-left point of (0,0). ImageDrawing wholeKiwi = new ImageDrawing(); wholeKiwi.Rect = new Rect(0, 0, 75, 75); wholeKiwi.ImageSource = new BitmapImage(new Uri(@"sampleImages\wholekiwi.png", UriKind.Relative)); imageDrawings.Children.Add(wholeKiwi); // // Use a DrawingBrush to paint a rectangle with // the drawings. // DrawingBrush dBrush = new DrawingBrush(imageDrawings); dBrush.Viewport = new Rect(0, 0, 0.5, 0.5); dBrush.TileMode = TileMode.Tile; dBrush.Freeze(); Rectangle exampleRectangle = new Rectangle(); exampleRectangle.Width = 175; exampleRectangle.Height = 175; exampleRectangle.Fill = dBrush; // Create a border to contain the rectangle. Border exampleBorder = new Border(); exampleBorder.BorderBrush = Brushes.Gray; exampleBorder.BorderThickness = new Thickness(1); exampleBorder.HorizontalAlignment = HorizontalAlignment.Left; exampleBorder.VerticalAlignment = VerticalAlignment.Top; exampleBorder.Margin = new Thickness(20); exampleBorder.Child = exampleRectangle; this.Background = Brushes.White; this.Margin = new Thickness(20); this.Content = exampleBorder; }