Когда Ось является областью для фиксации части диаграммы, курсор не отображается для всей диаграммы, а метки оси перекрываются. - PullRequest
1 голос
/ 31 января 2020

enter image description here Используя инструмент ColorBand, я определяю ось для диаграммы, поэтому для этой оси и сигнала назначается отдельная область диаграммы, но когда курсор включен, курсор не виден для всей диаграммы ( см. прикрепленное изображение) и названия осей перекрываются друг с другом (см. прикрепленное изображение).

Dictionary<int, AxisScope> list = new Dictionary<int, AxisScope>();
                    foreach (AxisScope axis in this.Chart.Axes.Custom)
                    {
                        axis.Visible = axis.Scope;
                        totalWeight += axis.Weight;
                        while (list.Keys.Contains(axis.Ordinal))
                            axis.ordinal++;
                        list.Add(axis.Ordinal, axis);
                    }
                    int ord = 0;
                    double start = 0;
                    int pos = 0;
                    int[] array = list.Keys.ToArray();
                    Array.Sort(array);
                    foreach (int i in array)
                    {
                        AxisScope scope = list[i];
                        scope.Ordinal = ord++;
                        if (scope.Scope && scope.Weight > 0)
                        {
                            if (scope.AxisColorBackground == null)
                                scope.AxisColorBackground = new ColorBand(this.Chart);

                            this.Chart.Tools.Add(scope.AxisColorBackground);
                            scope.AxisColorBackground.Axis = scope;

                            Color pen = Color.DarkRed;
                            Color back = Color.FromArgb(253, 253, 233);
                            if ((pos++ % 2) == 0)
                            {
                                pen = Color.DarkBlue;
                                back = Color.FromArgb(233, 253, 253);
                            }
                            scope.StartPosition = start;
                            start += (scope.Weight / totalWeight) * 100;
                            scope.EndPosition = start;
                            scope.AxisPen.Color = pen;
                            scope.AxisColorBackground.Pen.Color = back;
                            scope.AxisColorBackground.Brush.Color = back;
                            scope.AxisColorBackground.Brush.Transparency = 33;
                            scope.AxisColorBackground.Transparency = 33;
                            scope.AxisColorBackground.Start = double.MinValue;// scope.Minimum;
                            scope.AxisColorBackground.End = double.MaxValue;// scope.Maximum;
                            scope.AxisColorBackground.ResizeEnd = false;
                            scope.AxisColorBackground.ResizeStart = false;
                            scope.AxisColorBackground.Tag = "Axis -" + scope.Title.ToString();
                            scope.AxisColorBackground.Active = true;
                        }
                        else if (scope.Scope && scope.Weight == 0)
                        {
                            scope.Visible = false;
                        }    
                    }

enter image description here

1 Ответ

0 голосов
/ 31 января 2020

Не могли бы вы привести Минимальный воспроизводимый пример Я мог бы запустить здесь, чтобы немедленно воспроизвести вашу проблему? Если вы чувствуете, что ваш код слишком длинный, чтобы публиковать его здесь, возможно, вы можете заархивировать свой проект Visual Studio и разместить его на странице загрузки Стимы .

...