/// <summary> /// Defines fill brush. /// </summary> /// <param name="parentColor">Parent color.</param> /// <returns>Normal fill brush</returns> private static SolidColorBrush _GetFillBrush(System.Drawing.Color parentColor) { Color color = new Color(); color.A = parentColor.A; color.R = parentColor.R; color.G = parentColor.G; color.B = parentColor.B; SolidColorBrush resultBrush = new SolidColorBrush(color); // Freeze brush. resultBrush = (SolidColorBrush)resultBrush.GetCurrentValueAsFrozen(); Debug.Assert(resultBrush != null); return(resultBrush); }
/// <summary> /// Gets grayscale brush from color. /// </summary> /// <param name="originalColor">Input color.</param> /// <returns>Brush with converted grayscale color.</returns> private static SolidColorBrush _GetGrayscaleBrush(System.Drawing.Color originalColor) { Color grayscaleColor = new Color(); double R = Convert.ToDouble(originalColor.R); double G = Convert.ToDouble(originalColor.G); double B = Convert.ToDouble(originalColor.B); grayscaleColor.A = originalColor.A; // Convert original color to grayscale. grayscaleColor.R = Convert.ToByte((R + G + B) / GRAYSCALE_CONVERTER_PARAMETER); grayscaleColor.G = Convert.ToByte((R + G + B) / GRAYSCALE_CONVERTER_PARAMETER); grayscaleColor.B = Convert.ToByte((R + G + B) / GRAYSCALE_CONVERTER_PARAMETER); SolidColorBrush resultBrush = new SolidColorBrush(grayscaleColor); // Freeze brush. resultBrush = (SolidColorBrush)resultBrush.GetCurrentValueAsFrozen(); Debug.Assert(resultBrush != null); return(resultBrush); }
/// <summary> /// Creates canvas with invalidated route and its stops. /// </summary> /// <param name="route">Route to draw.</param> /// <param name="sortedRouteStops">Sorted stops from route.</param> /// <param name="mapImage">Map image.</param> /// <returns>Canvas with invalidated route and its stops.</returns> private SysControls.Canvas _CreateRouteCanvas(Route route, IList <Stop> sortedRouteStops, MapImage mapImage) { Debug.Assert(null != route); Debug.Assert(null != mapImage); Debug.Assert(null != sortedRouteStops); // create canvas var canvas = new SysControls.Canvas(); canvas.InvalidateVisual(); canvas.Height = mapImage.ImageHeight; canvas.Width = mapImage.ImageWidth; // init route brush from route color System.Drawing.Color color = route.Color; var mediaColor = SysWindows.Media.Color.FromArgb(color.A, color.R, color.G, color.B); var fillingBrush = new SolidColorBrush(mediaColor); // create and init route image SymbolControl routeBox = new SymbolControl(_routeSymbolTemplate); routeBox.Geometry = _CreatePath(route, sortedRouteStops, mapImage.Extent, mapImage.ImageWidth, mapImage.ImageHeight); routeBox.Fill = (SolidColorBrush)fillingBrush.GetCurrentValueAsFrozen(); routeBox.HorizontalAlignment = HorizontalAlignment.Stretch; routeBox.VerticalAlignment = VerticalAlignment.Stretch; // draw route canvas.Children.Add(routeBox); // draw stops - from last to first (visual elements) int stopLastIndex = sortedRouteStops.Count - 1; for (int index = stopLastIndex; index >= 0; --index) { Stop stop = sortedRouteStops[index]; if (!stop.MapLocation.HasValue) { continue; // skip empty } bool isVisible = true; if (stop.AssociatedObject is Location) { if (index == 0) { isVisible = _showLeadingStemTime; } else if (index == stopLastIndex) { isVisible = _showTrailingStemTime; } // else do nothing } if (isVisible) { UIElement element = _CreateStopUIElement(stop, mapImage, fillingBrush); if (element != null) { canvas.Children.Add(element); } } } return(canvas); }