/// <summary> /// Ivoked when trying change angle of the knob. /// Sets the valid angle to knob by the event args. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e"> /// The <see cref="Tech4WPF.Common.TryAngleChangeEventArgs"/> instance /// containing the event data. /// </param> private void onTryAngleChange(UserControl sender, TryAngleChangeEventArgs e) { double newAngle = TechUtils.AngleToPositive360(e.NewAngle); if (this.Snap) { newAngle = snapAngle(newAngle, e.OldAngle, e.IsWheelScrolling); } if (newAngle <= this.scale.AngleRange) { this.knob.Angle = newAngle; } else { double halfForbiddenAngleBehindRange = this.scale.AngleRange + ((360 - this.scale.AngleRange) / 2); if (newAngle <= halfForbiddenAngleBehindRange) { this.knob.Angle = this.scale.AngleRange; } else { this.knob.Angle = 0; } } }
/// <summary> /// Fires the try angle change event. /// </summary> /// <param name="newAngle">The new angle.</param> /// <param name="isWheelScrolling"><c>true</c> when is wheel scrolling.</param> private void fireTryAngleChange(double newAngle, bool isWheelScrolling) { //Maintaining the temporary copy of event to avoid race condition TryAngleChangeHandler tryAngleChange = TryAngleChange; if (tryAngleChange != null) { TryAngleChangeEventArgs angleChangedEventArgs = new TryAngleChangeEventArgs(newAngle, this.Angle, isWheelScrolling); tryAngleChange(this, angleChangedEventArgs); } }