void CircularGaugeControl_MouseMove(object sender, MouseEventArgs e) { CircularGaugeControl gauge = (CircularGaugeControl)sender; ArcScaleNeedle currentSelectedNeedle = selectedNeedle != null ? selectedNeedle : gauge.CalcHitInfo(e.GetPosition(gauge)).Needle; if(currentSelectedNeedle != null) ShowTooltip(currentSelectedNeedle, this, e.GetPosition(this)); else HideTooltip(); }
void CircularGaugeControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { CircularGaugeControl gauge = sender as CircularGaugeControl; if(gauge != null) { CircularGaugeHitInfo hitInfo = gauge.CalcHitInfo(e.GetPosition(gauge)); if(hitInfo.InNeedle) selectedNeedle = hitInfo.Needle; } }
void ShowTooltip(ArcScaleNeedle needle, UIElement placementTarget, Point position) { ttContent.Text = string.Format("Value = {0:F2}", needle.Value); needleTooltip.Placement = PlacementMode.RelativePoint; needleTooltip.PlacementTarget = placementTarget; needleTooltip.HorizontalOffset = position.X + toolTipOffset; needleTooltip.VerticalOffset = position.Y + toolTipOffset; needleTooltip.IsOpen = true; Cursor = Cursors.Hand; }
void CircularGaugeControl_MouseLeave(object sender, MouseEventArgs e) { selectedNeedle = null; HideTooltip(); }
void CircularGaugeControl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { selectedNeedle = null; HideTooltip(); }