Example #1
0
        public static void DrawLinkedRealtimeData(this DrawingContext drawingContext, IEnumerable <ImageAnalysisResult> points, double itemHeight, double firstHeight, double maxWidth, double maxHeight, bool useShindoIcon = true)
        {
            if (points == null)
            {
                return;
            }

            var    brush          = (Brush)Application.Current.FindResource($"ForegroundColor");
            var    subBrush       = (Brush)Application.Current.FindResource($"SubForegroundColor");
            int    count          = 0;
            double verticalOffset = 0;

            foreach (var point in points)
            {
                double horizontalOffset = 0;
                var    height           = count == 0 ? firstHeight : itemHeight;
                if (useShindoIcon)
                {
                    drawingContext.DrawIntensity(point.GetResultToIntensity().ToJmaIntensity(), new Point(0, verticalOffset), height);
                    horizontalOffset += height;
                }
                else
                {
                    drawingContext.DrawRectangle(new SolidColorBrush(Color.FromArgb(point.Color.A, point.Color.R, point.Color.G, point.Color.B)), null, new Rect(new Point(0, verticalOffset), new Size(height / 5, height)));
                    horizontalOffset += height / 5;
                }

                var region = point.ObservationPoint.Region;
                if (region.Contains(' '))
                {
                    region = region.Substring(0, region.IndexOf(' '));
                }

                var regionText = new FormattedText(region, CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, face, itemHeight * .6, brush, 1);
                drawingContext.DrawText(regionText, new Point(horizontalOffset + height * 0.1, verticalOffset + (height - regionText.Height) / 2));
                horizontalOffset += Math.Max(regionText.Width, maxWidth / 4);

                var valueText = new FormattedText(point.GetResultToIntensity()?.ToString("0.0") ?? "?", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, face, Math.Min(height * .4, itemHeight * .75), subBrush, 1);
                drawingContext.DrawText(valueText, new Point(maxWidth - valueText.Width, verticalOffset + height * .5));

                var nameText = new FormattedText(point.ObservationPoint.Name, CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, face2, itemHeight * .75, brush, 1);
                drawingContext.DrawText(nameText, new Point(horizontalOffset + height * 0.2, verticalOffset + (height - nameText.Height) / 2));

                count++;
                verticalOffset += height;
                if (verticalOffset >= maxHeight)
                {
                    return;
                }
            }
        }