public void ScrollView(double distance, ScrollingSpeeds speedLever) { double intervalRatio = GetSpeedRatio(speedLever); lock (locker) { if (Math.Sign(distance) != Math.Sign(remain)) { remain = (int)distance; } else { remain += (int)(distance * (round < AccelerateThreshold ? 1 : Accelerator)); } round = 0; totalDistance = remain; } totalRounds = CalulateTotalRounds(intervalRatio, totalDistance); if (workingThread == null) { workingThread = new Thread(ScrollingThread); workingThread.Start(); } }
private double GetSpeedRatio(ScrollingSpeeds speedLever) { var speedTable = new Dictionary <ScrollingSpeeds, double>() { { ScrollingSpeeds.Slow, 1.5 }, { ScrollingSpeeds.Normal, 1.0 }, { ScrollingSpeeds.Fast, 0.65 } }; return(speedTable[speedLever]); }
private void textBox_PreviewMouseWheel(object sender, MouseWheelEventArgs e) { e.Handled = true; ScrollingSpeeds scrollingSpeeds = ScrollingSpeeds.Normal; if (radioSlow.IsChecked ?? false) { scrollingSpeeds = ScrollingSpeeds.Slow; } else if (radioFast.IsChecked ?? false) { scrollingSpeeds = ScrollingSpeeds.Fast; } scrollController.ScrollView(e.Delta, scrollingSpeeds); }
public void ScrollView(double distance, ScrollingSpeeds speedLever) { double intervalRatio = GetSpeedRatio(speedLever); lock (locker) { if (Math.Sign(distance) != Math.Sign(remain)) { remain = (int)distance; } else { remain += (int)(distance * (round < AccelerateThreshold ? 1 : Accelerator)); } round = 0; totalDistance = remain; } totalRounds = CalculateTotalRounds(intervalRatio, totalDistance); startScrollEvent.Set(); }
private double GetSpeedRatio(ScrollingSpeeds speedLever) { return(speedTable[speedLever]); }