public void Show(string tooltipText, TooltipTimer tooltipTimer = null) { this.tooltipTimer = tooltipTimer; gameObject.SetActive(true); SetText(tooltipText); HandleFollowMouse(); }
public void Show(string tooltip, TooltipTimer tooltipTimer = null) { gameObject.SetActive(true); m_tooltipTimer = tooltipTimer; SetText(tooltip); HandleFollowMouse(); }
protected internal override void DataMouseLeave(object sender, MouseEventArgs e) { if (!Hoverable) { return; } var s = sender as Shape; if (s == null) { return; } var shape = Series.SelectMany( x => x.IsPrimitive ? x.Tracker.Primitives.Select(v => v.Value) : x.Tracker.Instances.Select(v => v.Value)) .FirstOrDefault(x => Equals(x.HoverShape, s)); if (shape == null) { return; } var targetAxis = Invert ? shape.Series.ScalesYAt : shape.Series.ScalesXAt; var sibilings = Invert ? Series.SelectMany( x => x.IsPrimitive ? x.Tracker.Primitives.Select(v => v.Value) : x.Tracker.Instances.Select(v => v.Value)) .Where(se => Math.Abs(se.ChartPoint.Y - shape.ChartPoint.Y) < AxisY[targetAxis].S * .01) .ToList() : Series.SelectMany( x => x.IsPrimitive ? x.Tracker.Primitives.Select(v => v.Value) : x.Tracker.Instances.Select(v => v.Value)) .Where(x => x.IsHighlighted).ToList(); foreach (var p in sibilings) { if (ShapeHoverBehavior == ShapeHoverBehavior.Dot) { p.Shape.Fill = p.Series.Stroke; p.Shape.Stroke = new SolidColorBrush { Color = PointHoverColor }; } else { p.Shape.Opacity = 1; } } TooltipTimer.Stop(); TooltipTimer.Start(); }
public void Show(string tooltipText, TooltipTimer tooltipTimer = null) { _tooltipTimer = tooltipTimer; SetText(tooltipText); KeepOnScreen(); gameObject.SetActive(true); _isActive = true; }
public override void DataMouseEnter(object sender, MouseEventArgs e) { if (DataToolTip == null) { return; } DataToolTip.Visibility = Visibility.Visible; TooltipTimer.Stop(); var senderShape = HoverableShapes.FirstOrDefault(s => Equals(s.Shape, sender)); if (senderShape == null) { return; } senderShape.Target.Stroke = senderShape.Series.Stroke; senderShape.Target.Fill = new SolidColorBrush { Color = PointHoverColor }; var scatterToolTip = DataToolTip as ScatterTooltip; if (scatterToolTip != null) { scatterToolTip.PrimaryAxisTitle = PrimaryAxis.Title; scatterToolTip.PrimaryValue = PrimaryAxis.LabelFormatter == null ? senderShape.Value.Y.ToString(CultureInfo.InvariantCulture) : PrimaryAxis.LabelFormatter(senderShape.Value.Y); scatterToolTip.SecondaryAxisTitle = SecondaryAxis.Title; scatterToolTip.SecondaryValue = SecondaryAxis.LabelFormatter == null ? senderShape.Value.X.ToString(CultureInfo.InvariantCulture) : SecondaryAxis.LabelFormatter(senderShape.Value.X); } var p = GetToolTipPosition(senderShape, null); DataToolTip.BeginAnimation(Canvas.LeftProperty, new DoubleAnimation { To = p.X, Duration = TimeSpan.FromMilliseconds(200) }); DataToolTip.BeginAnimation(Canvas.TopProperty, new DoubleAnimation { To = p.Y, Duration = TimeSpan.FromMilliseconds(200) }); }
public override void DataMouseLeave(object sender, MouseEventArgs e) { var s = sender as Shape; if (s == null) { return; } var shape = HoverableShapes.FirstOrDefault(x => Equals(x.Shape, s)); if (shape == null) { return; } shape.Target.Fill = shape.Series.Stroke; shape.Target.Stroke = new SolidColorBrush { Color = PointHoverColor }; TooltipTimer.Stop(); TooltipTimer.Start(); }
protected internal override void DataMouseEnter(object sender, MouseEventArgs e) { if (DataTooltip == null || !Hoverable) { return; } DataTooltip.Visibility = Visibility.Visible; TooltipTimer.Stop(); var senderShape = ShapesMapper.FirstOrDefault(s => Equals(s.HoverShape, sender)); if (senderShape == null) { return; } var pieSlice = senderShape.HoverShape as PieSlice; if (pieSlice == null) { return; } var xi = senderShape.Series.ScalesXAt; var yi = senderShape.Series.ScalesYAt; var labels = AxisX[xi].Labels != null ? AxisX[xi].Labels.ToArray() : null; senderShape.Shape.Opacity = .8; var vx = senderShape.ChartPoint.X; var indexedToolTip = DataTooltip as IndexedTooltip; if (indexedToolTip != null) { indexedToolTip.Header = null; //labels == null // ? (AxisX.LabelFormatter == null // ? vx.ToString(CultureInfo.InvariantCulture) // : AxisX.LabelFormatter(vx)) // : (labels.Length > vx // ? labels[(int)vx] // : ""); indexedToolTip.Data = new[] { new IndexedTooltipData { Index = (int)vx, Stroke = senderShape.HoverShape.Stroke, Fill = senderShape.HoverShape.Fill, Series = senderShape.Series, Point = senderShape.ChartPoint, Value = AxisY[yi].LabelFormatter == null ? senderShape.ChartPoint.Y.ToString(CultureInfo.InvariantCulture) : AxisY[yi].LabelFormatter(senderShape.ChartPoint.Y) } }; } var alpha = pieSlice.RotationAngle + pieSlice.WedgeAngle * .5 + 180; var alphaRad = alpha * Math.PI / 180; var sliceMidAngle = alpha - 180; DataTooltip.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); var y = Canvas.ActualHeight * .5 + (sliceMidAngle > 90 && sliceMidAngle < 270 ? -1 : 0) * DataTooltip.DesiredSize.Height - Math.Cos(alphaRad) * 15; var x = Canvas.ActualWidth * .5 + (sliceMidAngle > 0 && sliceMidAngle < 180 ? -1 : 0) * DataTooltip.DesiredSize.Width + Math.Sin(alphaRad) * 15; var p = new Point(x, y); DataTooltip.BeginAnimation(Canvas.LeftProperty, new DoubleAnimation { To = p.X, Duration = TimeSpan.FromMilliseconds(200) }); DataTooltip.BeginAnimation(Canvas.TopProperty, new DoubleAnimation { To = p.Y, Duration = TimeSpan.FromMilliseconds(200) }); pieSlice.Opacity = .8; var anim = new DoubleAnimation { To = 5, Duration = TimeSpan.FromMilliseconds(150) }; pieSlice.BeginAnimation(PieSlice.PushOutProperty, anim); }
public void Hide() { m_tooltipTimer = null; gameObject.SetActive(false); }
protected internal override void DataMouseEnter(object sender, MouseEventArgs e) { //this is only while we fix PCL try... if (DataTooltip == null || !Hoverable) { return; } DataTooltip.Visibility = Visibility.Visible; TooltipTimer.Stop(); var senderShape = Series.SelectMany( x => x.IsPrimitive ? x.Tracker.Primitives.Select(v => v.Value) : x.Tracker.Instances.Select(v => v.Value)) .FirstOrDefault(x => Equals(x.HoverShape, sender)); if (senderShape == null) { return; } var targetAxis = Invert ? senderShape.Series.ScalesYAt : senderShape.Series.ScalesXAt; var sibilings = Invert ? Series.SelectMany( x => x.IsPrimitive ? x.Tracker.Primitives.Select(v => v.Value) : x.Tracker.Instances.Select(v => v.Value)) .Where(s => Math.Abs(s.ChartPoint.Y - senderShape.ChartPoint.Y) < AxisY[targetAxis].S * .01) .ToList() : Series.SelectMany( x => x.IsPrimitive ? x.Tracker.Primitives.Select(v => v.Value) : x.Tracker.Instances.Select(v => v.Value)) .Where(s => Math.Abs(s.ChartPoint.X - senderShape.ChartPoint.X) < AxisX[targetAxis].S * .01) .ToList(); var first = sibilings.Count > 0 ? sibilings[0] : null; var vx = first != null ? (Invert ? first.ChartPoint.Y : first.ChartPoint.X) : 0; foreach (var sibiling in sibilings) { if (ShapeHoverBehavior == ShapeHoverBehavior.Dot) { sibiling.Shape.Stroke = sibiling.Series.Stroke; sibiling.Shape.Fill = new SolidColorBrush { Color = PointHoverColor }; } else { sibiling.Shape.Opacity = .8; } sibiling.IsHighlighted = true; } var indexedToolTip = DataTooltip as IndexedTooltip; if (indexedToolTip != null) { var fh = (Invert ? AxisY[targetAxis] : AxisX[targetAxis]).GetFormatter(); var fs = (Invert ? AxisX[targetAxis] : AxisY[targetAxis]).GetFormatter(); indexedToolTip.Header = fh(vx); indexedToolTip.Data = sibilings.Select(x => new IndexedTooltipData { Index = Series.IndexOf(x.Series), Series = x.Series, Stroke = x.Series.Stroke, Fill = x.Series.Fill, Point = x.ChartPoint, Value = fs(Invert ? x.ChartPoint.X : x.ChartPoint.Y) }).ToArray(); } //var p = GetToolTipPosition(senderShape, sibilings); DataTooltip.UpdateLayout(); DataTooltip.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); var xt = senderShape.ChartPoint.X > (AxisX[targetAxis].MinLimit + AxisX[targetAxis].MaxLimit) / 2 ? senderShape.ChartPoint.Location.X - 10 - DataTooltip.DesiredSize.Width : senderShape.ChartPoint.Location.X + 10; xt += System.Windows.Controls.Canvas.GetLeft(DrawMargin); var y = sibilings.Select(s => s.ChartPoint.Location.Y).DefaultIfEmpty(0).Sum() / sibilings.Count; y = y + DataTooltip.DesiredSize.Height > ActualHeight ? y - (y + DataTooltip.DesiredSize.Height - ActualHeight) - 5 : y; var p = new Point(xt, y); DataTooltip.BeginAnimation(System.Windows.Controls.Canvas.LeftProperty, new DoubleAnimation { To = p.X, Duration = TimeSpan.FromMilliseconds(200) }); DataTooltip.BeginAnimation(System.Windows.Controls.Canvas.TopProperty, new DoubleAnimation { To = p.Y, Duration = TimeSpan.FromMilliseconds(200) }); }